亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > 建站經驗 > 正文

8個必備的PHP功能開發

2024-04-25 20:42:15
字體:
來源:轉載
供稿:網友

PHP開發的程序員應該清楚,PHP中有很多內置的功能,掌握了它們,可以幫助你在做PHP開發時更加得心應手,本文將分享8個開發必備的PHP功能,個個都非常實用,希望各位PHP開發者能夠掌握。

1、傳遞任意數量的函數參數

我們在.NET或者JAVA編程中,一般函數參數個數都是固定的,但是PHP允許你使用任意個數的參數。下面這個示例向你展示了PHP函數的默認參數:

//兩個默認參數的函數functionfoo($arg1=”,$arg2=”){echo“arg1:$arg1n”;echo“arg2:$arg2n”;}foo(‘hello','world');/*輸出:arg1:helloarg2:world*/foo();/*輸出:arg1:arg2:*/

下面這個示例是PHP的不定參數用法,其使用到了func_get_args()方法:

//是的,形參列表為空functionfoo(){//取得所有的傳入參數的數組$args=func_get_args();foreach($argsas$k=>$v){echo“arg”.($k+1).”:$vn”;}}foo();/*什么也不會輸出*/foo(‘hello');/*輸出arg1:hello*/foo(‘hello',‘world',‘again');/*輸出arg1:helloarg2:worldarg3:again*/

2、使用glob()查找文件

大部分PHP函數的函數名從字面上都可以理解其用途,但是當你看到glob()的時候,你也許并不知道這是用來做什么的,其實glob()和scandir()一樣,可以用來查找文件,請看下面的用法:

//取得所有的后綴為PHP的文件$files=glob(‘*.php');print_r($files);/*輸出:Array([0]=>phptest.php[1]=>pi.php[2]=>post_output.php[3]=>test.php)*/你還可以查找多種后綴名://取PHP文件和TXT文件$files=glob(‘*.{php,txt}',GLOB_BRACE);print_r($files);/*輸出:Array([0]=>phptest.php[1]=>pi.php[2]=>post_output.php[3]=>test.php[4]=>log.txt[5]=>test.txt13.)*/

你還可以加上路徑:

$files=glob(‘../images/a*.jpg');print_r($files);/*輸出:Array([0]=>../images/apple.jpg[1]=>../images/art.jpg)*/

如果你想得到絕對路徑,你可以調用realpath()函數:

$files=glob(‘../images/a*.jpg');//appliesthefunctiontoeacharrayelement$files=array_map(‘realpath',$files);print_r($files);/*outputlookslike:Array([0]=>C:wampwwwimagesapple.jpg[1]=>C:wampwwwimagesart.jpg)*/

3、獲取內存使用情況信息

PHP的內存回收機制已經非常強大,你也可以使用PHP腳本獲取當前內存的使用情況,調用memory_get_usage()函數獲取當期內存使用情況,調用memory_get_peak_usage()函數獲取內存使用的峰值。參考代碼如下:

echo“Initial:“.memory_get_usage().”bytesn”;/*輸出Initial:361400bytes*///使用內存for($i=0;$i<100000;$i++){$array[]=md5($i);}//刪除一半的內存for($i=0;$i<100000;$i++){unset($array[$i]);}echo“Final:“.memory_get_usage().”bytesn”;/*printsFinal:885912bytes*/echo“Peak:“.memory_get_peak_usage().”bytesn”;/*輸出峰值Peak:13687072bytes*/

4、獲取CPU使用情況信息

獲取了內存使用情況,也可以使用PHP的getrusage()獲取CPU使用情況,該方法在windows下不可用。

print_r(getrusage());/*輸出Array([ru_oublock]=>0[ru_inblock]=>0[ru_msgsnd]=>2[ru_msgrcv]=>3[ru_maxrss]=>12692[ru_ixrss]=>764[ru_idrss]=>3864[ru_minflt]=>94[ru_majflt]=>0[ru_nsignals]=>1[ru_nvcsw]=>67[ru_nivcsw]=>4[ru_nswap]=>0[ru_utime.tv_usec]=>0[ru_utime.tv_sec]=>0[ru_stime.tv_usec]=>6269[ru_stime.tv_sec]=>0)*/

這個結構看上出很晦澀,除非你對CPU很了解。下面一些解釋:

ru_oublock:塊輸出操作

ru_inblock:塊輸入操作

ru_msgsnd:發送的message

ru_msgrcv:收到的message

ru_maxrss:最大駐留集大小

ru_ixrss:全部共享內存大小

ru_idrss:全部非共享內存大小

ru_minflt:頁回收

ru_majflt:頁失效

ru_nsignals:收到的信號

ru_nvcsw:主動上下文切換

ru_nivcsw:被動上下文切換

ru_nswap:交換區

ru_utime.tv_usec:用戶態時間(microseconds)

ru_utime.tv_sec:用戶態時間(seconds)

ru_stime.tv_usec:系統內核時間(microseconds)

ru_stime.tv_sec:系統內核時間?(seconds)

要看到你的腳本消耗了多少CPU,我們需要看看“用戶態的時間”和“系統內核時間”的值。秒和微秒部分是分別提供的,您可以把微秒值除以100萬,并把它添加到秒的值后,可以得到有小數部分的秒數。

//sleepfor3seconds(non-busy)sleep(3);$data=getrusage();echo“Usertime:“.($data['ru_utime.tv_sec']+$data['ru_utime.tv_usec']/1000000);echo“Systemtime:“.($data['ru_stime.tv_sec']+$data['ru_stime.tv_usec']/1000000);/*輸出Usertime:0.011552Systemtime:0*/sleep是不占用系統時間的,我們可以來看下面的一個例子://loop10milliontimes(busy)for($i=0;$i<10000000;$i++){}$data=getrusage();echo“Usertime:“.($data['ru_utime.tv_sec']+$data['ru_utime.tv_usec']/1000000);echo“Systemtime:“.($data['ru_stime.tv_sec']+$data['ru_stime.tv_usec']/1000000);/*輸出Usertime:1.424592Systemtime:0.004204*/

這花了大約14秒的CPU時間,幾乎所有的都是用戶的時間,因為沒有系統調用。

系統時間是CPU花費在系統調用上的上執行內核指令的時間。下面是一個例子:

$start=microtime(true);//keepcallingmicrotimeforabout3secondswhile(microtime(true)–$start<3){}$data=getrusage();echo“Usertime:“.($data['ru_utime.tv_sec']+$data['ru_utime.tv_usec']/1000000);echo“Systemtime:“.($data['ru_stime.tv_sec']+$data['ru_stime.tv_usec']/1000000);/*printsUsertime:1.088171Systemtime:1.675315*/

我們可以看到上面這個例子更耗CPU。

5、獲取系統常量

PHP提供非常有用的系統常量可以讓你得到當前的行號(__LINE__),文件(__FILE__),目錄(__DIR__),函數名(__FUNCTION__),類名(__CLASS__),方法名(__METHOD__)和名字空間(__NAMESPACE__),很像C語言。

我們可以以為這些東西主要是用于調試,當也不一定,比如我們可以在include其它文件的時候使用?__FILE__(當然,你也可以在PHP5.3以后使用__DIR__),下面是一個例子。

//thisisrelativetotheloadedscript'spath//itmaycauseproblemswhenrunningscriptsfromdifferentdirectoriesrequire_once(‘config/database.php');//thisisalwaysrelativetothisfile'spath//nomatterwhereitwasincludedfromrequire_once(dirname(__FILE__).‘/config/database.php');

下面是使用__LINE__來輸出一些debug的信息,這樣有助于你調試程序:

//somecode//…my_debug(“somedebugmessage”,__LINE__);/*輸出Line4:somedebugmessage*///somemorecode//…my_debug(“anotherdebugmessage”,__LINE__);/*輸出Line11:anotherdebugmessage*/functionmy_debug($msg,$line){echo“Line$line:$msgn”;}

6、生成唯一的id

很多朋友都利用md5()來生成唯一的編號,但是md5()有幾個缺點:1、無序,導致數據庫中排序性能下降。2、太長,需要更多的存儲空間。其實PHP中自帶一個函數來生成唯一的id,這個函數就是uniqid()。下面是用法:

//generateuniquestringechouniqid();/*輸出4bd67c947233e*///generateanotheruniquestringechouniqid();/*輸出4bd67c9472340*/

該算法是根據CPU時間戳來生成的,所以在相近的時間段內,id前幾位是一樣的,這也方便id的排序,如果你想更好的避免重復,可以在id前加上前綴,如:

//前綴echouniqid(‘foo_');/*輸出foo_4bd67d6cd8b8f*///有更多的熵echouniqid(”,true);/*輸出4bd67d6cd8b926.12135106*///都有echouniqid(‘bar_',true);/*輸出bar_4bd67da367b650.43684647*/

7、序列化

PHP序列化功能大家可能用的比較多,也比較常見,當你需要把數據存到數據庫或者文件中是,你可以利用PHP中的serialize()和unserialize()方法來實現序列化和反序列化,代碼如下:

//一個復雜的數組$myvar=array(‘hello',42,array(1,'two'),‘apple');//序列化$string=serialize($myvar);echo$string;/*輸出a:4:{i:0;s:5:”hello”;i:1;i:42;i:2;a:2:{i:0;i:1;i:1;s:3:”two”;}i:3;s:5:”apple”;}*///反序例化$newvar=unserialize($string);print_r($newvar);/*輸出Array([0]=>hello[1]=>42[2]=>Array([0]=>1[1]=>two)[3]=>apple)*/

如何序列化成json格式呢,放心,php也已經為你做好了,使用php5.2以上版本的用戶可以使用json_encode()和json_decode()函數來實現json格式的序列化,代碼如下:

//acomplexarray$myvar=array(‘hello',42,array(1,'two'),‘apple');//converttoastring$string=json_encode($myvar);echo$string;/*prints["hello",42,[1,"two"],”apple”]*///youcanreproducetheoriginalvariable$newvar=json_decode($string);print_r($newvar);/*printsArray([0]=>hello[1]=>42[2]=>Array([0]=>1[1]=>two)[3]=>apple)*/

8、字符串壓縮

當我們說到壓縮,我們可能會想到文件壓縮,其實,字符串也是可以壓縮的。PHP提供了gzcompress()和gzuncompress()函數:

$string=“Loremipsumdolorsitamet,consecteturadipiscingelit.Nuncutelitidmiultriciesadipiscing.Nullafacilisi.Praesentpulvinar,sapienvelfeugiatvestibulum,nulladuipretiumorci,nonultricieselitlacusquisante.Loremipsumdolorsitamet,consecteturadipiscingelit.Aliquampretiumullamcorperurnaquisiaculis.Etiamacmassasedturpistemporluctus.Curabitursednibheuelitmolliscongue.Praesentipsumdiam,consecteturvitaeornarea,aliquamanunc.Inidmagnapellentesquetellusposuereadipiscing.Sednonmimetus,atlaciniaaugue.Sedmagnanisi,ornareinmollisin,mollissednunc.Etiamatjustoinleoconguemollis.Nullaminnequeegetmetushendreritscelerisqueeunonenim.Utmalesuadalacuseunullabibendumideuismodurnasodales.“;$compressed=gzcompress($string);echo“Originalsize:“.strlen($string).”n”;/*輸出原始大小Originalsize:800*/echo“Compressedsize:“.strlen($compressed).”n”;/*輸出壓縮后的大小Compressedsize:418*///解壓縮$original=gzuncompress($compressed);

幾乎有50%壓縮比率。同時,你還可以使用gzencode()和gzdecode()函數來壓縮,只不用其用了不同的壓縮算法。

以上就是8個開發必備的PHP功能,是不是都很實用呢?

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲天堂av综合网| 色黄久久久久久| 久久久伊人欧美| 成人网在线免费看| 色一情一乱一区二区| 国产精品私拍pans大尺度在线| 亚洲精品日韩在线| 丝袜美腿亚洲一区二区| 午夜美女久久久久爽久久| 亚洲第一天堂av| 亚洲春色另类小说| 欧美国产精品va在线观看| 操人视频在线观看欧美| 欧美性猛交xxxx乱大交| 亚洲free性xxxx护士白浆| 久久这里有精品视频| 97免费中文视频在线观看| 久久久久久久影视| 欧美日韩在线视频一区二区| 日日狠狠久久偷偷四色综合免费| 国产精品久久久久久久一区探花| 国产精品一区二区三区久久| 欧美日韩性视频在线| 欧美性猛交xxxx免费看久久久| 亚洲free性xxxx护士白浆| 最新中文字幕亚洲| 国产精品视频导航| 秋霞成人午夜鲁丝一区二区三区| 岛国精品视频在线播放| 欧美一级电影免费在线观看| 91免费国产网站| 91精品视频免费观看| 精品久久久久久亚洲国产300| 国产精品成人在线| 97av在线播放| 欧美高跟鞋交xxxxxhd| 91九色精品视频| 97精品欧美一区二区三区| 欧美情侣性视频| 国产精品免费一区豆花| 国产成人精品视频在线| 亚洲福利视频专区| 91精品在线看| 日韩成人av在线| 色综合老司机第九色激情| 亚洲日本中文字幕| 日本欧美在线视频| 精品人伦一区二区三区蜜桃免费| 亚洲激情小视频| 原创国产精品91| 丰满岳妇乱一区二区三区| 成人激情视频网| 久久免费福利视频| 欧美富婆性猛交| 69久久夜色精品国产7777| 日本欧美中文字幕| 欧美区二区三区| 国产精品久久久久久av下载红粉| 97香蕉久久夜色精品国产| 日韩精品极品毛片系列视频| 国产欧洲精品视频| 亚洲一区亚洲二区亚洲三区| 欧美老女人在线视频| 欧美制服第一页| 另类天堂视频在线观看| 中文一区二区视频| 国产综合色香蕉精品| 黑人巨大精品欧美一区免费视频| 日韩精品在线视频观看| 久久久久久久久久婷婷| 久久久亚洲国产天美传媒修理工| 亚洲精品福利视频| 国产亚洲福利一区| 亚洲a级在线播放观看| 国产精品日韩在线| 日韩在线免费视频| 国产精品青青在线观看爽香蕉| 日本亚洲欧洲色α| 国产精品va在线| 亚洲大胆美女视频| 亚洲高清免费观看高清完整版| 欧美精品免费在线| 91精品久久久久久久久| 亚洲小视频在线观看| 91精品免费视频| 亚洲激情免费观看| 久久久精品视频成人| 国产精品色视频| 国产精品草莓在线免费观看| 在线精品91av| 国产91精品久久久久| 成人信息集中地欧美| 伊人久久大香线蕉av一区二区| 91精品91久久久久久| 午夜精品久久久久久久久久久久久| 日韩欧美国产视频| 成人高清视频观看www| 日韩欧美国产中文字幕| 国产精品久久久久久久午夜| 黄色精品一区二区| 久久男人的天堂| 国产精品一区二区久久精品| 免费不卡在线观看av| 国产亚洲成精品久久| 国产日韩av高清| 久久久久久久久久久久久久久久久久av| 一区二区三区动漫| 日韩在线观看av| 国产精品网址在线| 欧美激情免费看| 久久香蕉国产线看观看av| 欧美日韩国产综合视频在线观看中文| 伊人久久久久久久久久久久久| 永久555www成人免费| 成人激情免费在线| 欧美性猛交xxxx免费看久久久| 中文字幕日韩欧美精品在线观看| 亚洲一区国产精品| 国产日产欧美a一级在线| 欧美午夜精品在线| 亚洲精品国产精品自产a区红杏吧| 另类色图亚洲色图| 国产精品美女网站| 日韩精品极品毛片系列视频| 97国产真实伦对白精彩视频8| 久久夜色精品亚洲噜噜国产mv| 欧美成人一二三| 精品欧美一区二区三区| 国产91色在线播放| 日韩av色在线| 国产欧美日韩中文字幕在线| 欧美猛交ⅹxxx乱大交视频| 一区二区三区在线播放欧美| 日本精品久久久久影院| 欧美大尺度激情区在线播放| 亚洲免费视频在线观看| 久久久久久中文| 久久精品一区中文字幕| 国产成人精彩在线视频九色| 国产在线观看不卡| 亚洲在线观看视频| 久久久久久伊人| 亚洲黄色av网站| 成人免费视频xnxx.com| 国产精品无av码在线观看| 久久久精品日本| 日韩美女激情视频| 久久久99久久精品女同性| 91成人国产在线观看| 欧美成人剧情片在线观看| 亚洲精品欧美极品| 亚洲精品电影久久久| 91chinesevideo永久地址| 国产成人精品电影久久久| 色www亚洲国产张柏芝| 九九视频这里只有精品| 在线视频欧美日韩| 美女扒开尿口让男人操亚洲视频网站| 久久在线观看视频| 国产男人精品视频| 亚洲专区在线视频| 中文字幕无线精品亚洲乱码一区| 日韩在线视频播放| 国产在线98福利播放视频|