PHP 內建了許多強大的功能,熟練掌握它們能讓開發事半功倍。本文整理了 8 個實用至極的 PHP 核心功能,涵蓋參數處理、文件操作、效能監控、系統常量、唯一 ID 生成、序列化與壓縮等關鍵領域,助你寫出更優雅、高效的代碼。
不同於 Java 或 C# 固定參數列表,PHP 允許函數接收不定數量的參數。
function foo($arg1 = '', $arg2 = '') {
echo "arg1: $arg1\n";
echo "arg2: $arg2\n";
}
foo('hello', 'world'); // 輸出: arg1: hello, arg2: world
foo(); // 輸出: arg1: , arg2:
func_get_args()function foo() {
$args = func_get_args();
foreach ($args as $k => $v) {
echo "arg" . ($k+1) . ": $v\n";
}
}
foo(); // 無輸出
foo('hello'); // 輸出 arg1: hello
foo('hello', 'world', 'again'); // 輸出 arg1: hello, arg2: world, arg3: again
glob() 高效查找文件glob() 類似 scandir(),但支援模式匹配,用法直觀:
// 獲取所有 .php 文件
$files = glob('*.php');
print_r($files);
// 同時匹配多種副檔名
$files = glob('*.{php,txt}', GLOB_BRACE);
// 支援路徑
$files = glob('../images/a*.jpg');
// 獲取絕對路徑
$files = array_map('realpath', glob('../images/a*.jpg'));
利用 memory_get_usage() 獲取當前內存佔用,memory_get_peak_usage() 獲取峰值,方便效能調優:
echo "Initial: " . memory_get_usage() . " bytes\n";
// 模擬佔用內存
for ($i = 0; $i < 100000; $i++) { $array[] = md5($i); }
// 釋放一半
for ($i = 0; $i < 100000; $i++) { unset($array[$i]); }
echo "Final: " . memory_get_usage() . " bytes\n";
echo "Peak: " . memory_get_peak_usage() . " bytes\n";
getrusage() 返回系統資源使用統計(Windows 不支援),重點關注用戶態時間 (ru_utime) 與核心態時間 (ru_stime):
$data = getrusage(); $userTime = $data['ru_utime.tv_sec'] + $data['ru_utime.tv_usec'] / 1000000; $sysTime = $data['ru_stime.tv_sec'] + $data['ru_stime.tv_usec'] / 1000000; echo "User time: $userTime\nSystem time: $sysTime";
PHP 提供 __LINE__、__FILE__、__DIR__、__FUNCTION__、__CLASS__、__METHOD__、__NAMESPACE__ 等常量,極大簡化調試與路徑解析:
// 安全引用配置文件
require_once(dirname(__FILE__) . '/config/database.php');
// 除錯輸出行號
function my_debug($msg, $line) { echo "Line $line: $msg\n"; }
my_debug("訊息", __LINE__);
uniqid()比 md5() 更短、可排序、基於微秒時間戳:
echo uniqid(); // 如 4bd67c947233e
echo uniqid('foo_'); // 帶前綴 foo_4bd67d6cd8b8f
echo uniqid('', true); // 更多熵 4bd67d6cd8b926.12135106
echo uniqid('bar_', true); // 兩者結合
serialize()/unserialize() 適合 PHP 內部存儲;json_encode()/json_decode() 則是跨語言交換的標準:
$myvar = ['hello', 42, [1, 'two'], 'apple']; $str = serialize($myvar); // PHP 專用格式 $json = json_encode($myvar); // ["hello",42,[1,"two"],"apple"]
gzcompress() / gzuncompress()適合壓縮長文本、緩存大數據,壓縮率可達 50% 以上:
$string = "很長的文本內容..."; $compressed = gzcompress($string); echo "原始: " . strlen($string) . " 字節\n"; echo "壓縮: " . strlen($compressed) . " 字節\n"; $original = gzuncompress($compressed); // 還原
掌握這 8 大功能,能讓你的 PHP 代碼更簡潔、健壯且高效。