5、魔術(shù)常量
PHP 提供了獲取當(dāng)前行號(hào) (__LINE__)、文件路徑 (__FILE__)、目錄路徑 (__DIR__)、函數(shù)名 (__FUNCTION__)、類名 (__CLASS__)、方法名 (__METHOD__) 和命名空間 (__NAMESPACE__) 等有用的魔術(shù)常量。在這篇文章中不作一一介紹,但是我將告訴你一些用例。當(dāng)包含其他腳本文件時(shí),使用 __FILE__ 常量(或者使用 PHP5.3 新具有的 __DIR__ 常量):
// this is relative to the loaded script's path // it may cause problems when running scripts from different directories require_once('config/database.php');
// this is always relative to this file's path // no matter where it was included from require_once(dirname(__FILE__) . '/config/database.php');
使用 __LINE__ 使得調(diào)試更為輕松。你可以跟蹤到具體行號(hào)。
// some code // ... my_debug("some debug message", __LINE__); /* prints Line 4: some debug message */
// some more code // ... my_debug("another debug message", __LINE__); /* prints Line 11: another debug message */
function my_debug($msg, $line) { echo "Line $line: $msg\n"; }
6、生成唯一標(biāo)識(shí)符
某些場(chǎng)景下,可能需要生成一個(gè)唯一的字符串。我看到很多人使用 md5() 函數(shù),即使它并不完全意味著這個(gè)目的:
// generate unique string echo md5(time() . mt_rand(1,1000000)); There is actually a PHP function named uniqid() that is meant to be used for this.
// generate unique string echo uniqid(); /* prints 4bd67c947233e */
// generate another unique string echo uniqid(); /* prints 4bd67c9472340 */
你可能會(huì)注意到,盡管字符串是唯一的,前幾個(gè)字符卻是類似的,這是因?yàn)樯傻淖址c服務(wù)器時(shí)間相關(guān)。但實(shí)際上也存在友好的一方面,由于每個(gè)新生成的 ID 會(huì)按字母順序排列,這樣排序就變得很簡(jiǎn)單。為了減少重復(fù)的概率,你可以傳遞一個(gè)前綴,或第二個(gè)參數(shù)來(lái)增加熵:
// with prefix echo uniqid('foo_'); /* prints foo_4bd67d6cd8b8f */
// with more entropy echo uniqid('',true); /* prints 4bd67d6cd8b926.12135106 */
// both echo uniqid('bar_',true); /* prints bar_4bd67da367b650.43684647 */
這個(gè)函數(shù)將產(chǎn)生比 md5() 更短的字符串,能節(jié)省一些空間。
出處:藍(lán)色理想
責(zé)任編輯:bluehearts
上一頁(yè) 9個(gè)必須知道的實(shí)用PHP函數(shù)和功能 [2] 下一頁(yè) 9個(gè)必須知道的實(shí)用PHP函數(shù)和功能 [4]
◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論
|