PHP 核心知識體系結構化速查
本文將分散的語法、函數、類、配置、安全、效能等知識點整理為**結構化速查手冊**,適合進階開發者隨時查閱、面試複習、代碼審查參考。
語言基礎
- 命名規範:類/介面 PascalCase、方法/屬性 camelCase、常量 UPPER_SNAKE、私有前綴 `_`、介面前綴 `I`。
- 語言結構:`echo`/`print`/`isset`/`empty`/`unset`/`list`/`array`/`eval`/`exit`/`die` 非函數,不可作為可變函數調用。
- 預定義常量:`PHP_VERSION`、`PHP_OS`、`PHP_SAPI`、`PHP_INT_MAX`、`PHP_EOL`、`DIRECTORY_SEPARATOR`、`PATH_SEPARATOR`、`M_PI`、`M_E`、`__FILE__`、`__LINE__`、`__DIR__`、`__FUNCTION__`、`__CLASS__`、`__METHOD__`、`__NAMESPACE__`、`__TRAIT__`。
- 大小寫敏感:類/方法/屬性/函數**不敏感**;變量/常量/陣列鍵**敏感**。
- 可變語法:`$$var`、`$obj->$prop`、`$obj->$method()`、`$class::$$staticProp`、`$func()`、`$arr[$key]`。
類型系統與操作
- 標量:`int`(32位平台 4 字節)、`float`(不可直接比較)、`string`(單/雙引號/heredoc/nowdoc)、`bool`。
- 複合:`array`(有序映射)、`object`、`callable`、`iterable`。
- 特殊:`resource`、`null`、`never`(PHP 8.1)、`mixed`(PHP 8.0)。
- 判斷函數:`is_int`/`is_float`/`is_string`/`is_array`/`is_object`/`is_bool`/`is_null`/`is_resource`/`is_scalar`/`is_callable`/`is_iterable`/`is_numeric`。
- 轉換:`(int)`/`(float)`/`(string)`/`(bool)`/`(array)`/`(object)`/`intval()`/`floatval()`/`strval()`/`boolval()`/`settype()`。
流程控制與函數
- 替代語法:`if: ... elseif: ... else: ... endif;`、`while: ... endwhile;`、`for: ... endfor;`、`foreach: ... endforeach;`、`switch: ... endswitch;`(嵌入 HTML 模板常用)。
- 函數參數:預設值(僅標量/陣列/NULL)、引用傳遞 `&$arg`、可變參數 `...$args`、`func_get_args()`/`func_get_arg()`/`func_num_args()`。
- 返回引用:`function &foo() { return $ref; }` `$x =& foo();`。
- 作用域:全局/局部/靜態 `static`/`global`/`$GLOBALS`/超全局(`$_GET`/`$_POST`/`$_SESSION`...)。
- 匿名函數/閉包:`fn() => ...`、`function() use ($var) {}`、`Closure::bind()`/`call()`/`fromCallable()`。
- 生成器:`yield`、`yield from`、`Generator` 物件、`IteratorAggregate`。
陣列操作精華
- 指針:`current`/`key`/`next`/`prev`/`end`/`reset`/`each`(`foreach` 遍歷拷貝,寫入觸發 Copy-on-Write)。
- 遍歷:`foreach ($arr as $k => &$v)` 引用修改原陣列。
- 核心函數:
- 統計:`count`/`array_count_values`/`array_sum`/`array_product`
- 鍵值:`array_keys`/`array_values`/`array_flip`/`array_change_key_case`
- 合併:`array_merge`(字串鍵覆蓋、數字鍵重索引)、`array_merge_recursive`、`+` 運算符(鍵不覆蓋)
- 搜索:`in_array`/`array_key_exists`/`array_search`/`array_column`
- 分割/切片:`array_chunk`/`array_slice`/`array_splice`
- 排序:`sort`/`rsort`/`asort`/`arsort`/`ksort`/`krsort`/`usort`/`uksort`/`uasort`/`natsort`/`natcasesort`/`shuffle`
- 堆疊/隊列:`array_push`/`array_pop`/`array_unshift`/`array_shift`
- 差集/交集:`array_diff*`/`array_intersect*` 系列
- 映射/過濾:`array_map`/`array_filter`/`array_walk`/`array_reduce`
字符串與正則
- 編碼:全鏈路 UTF-8(檔案、資料庫、連線、HTTP Header、HTML Meta)。
- 核心函數:`strlen`/`mb_strlen`、`substr`/`mb_substr`/`mb_strcut`、`strpos`/`mb_strpos`/`stripos`、`str_replace`/`str_ireplace`、`preg_match`/`preg_match_all`/`preg_replace`/`preg_split`、`json_encode`/`json_decode`(`JSON_UNESCAPED_UNICODE`/`JSON_UNESCAPED_SLASHES`/`JSON_THROW_ON_ERROR`)、`hash`/`hash_hmac`/`password_hash`/`password_verify`。
- PCRE 修飾符:`i`(忽略大小寫)、`m`(多行)、`s`(單行/點匹配換行)、`u`(UTF-8)、`x`(擴展語法)。
物件導向進階
- 魔術方法:`__construct`/`__destruct`/`__call`/`__callStatic`/`__get`/`__set`/`__isset`/`__unset`/`__sleep`/`__wakeup`/`__serialize`/`__unserialize`/`__toString`/`__invoke`/`__clone`/`__debugInfo`/`__set_state`。
- 關鍵字:`public`/`protected`/`private`/`static`/`final`/`abstract`/`readonly`(PHP 8.1)/`interface`/`trait`/`implements`/`extends`/`instanceof`/`::class`/`self`/`parent`/`static`(靜態延遲綁定)。
- 設計模式:單例、工廠、建造者、策略、觀察者、裝飾器、適配器、Repository、Entity/ValueObject(DDD)。
- 反射:`ReflectionClass`/`ReflectionMethod`/`ReflectionProperty`/`ReflectionFunction`/`ReflectionParameter`/`ReflectionAttribute`(PHP 8.0)。
資料庫與安全
- PDO 最佳實踐:`ATTR_ERRMODE => ERRMODE_EXCEPTION`、`ATTR_EMULATE_PREPARES => false`、`ATTR_DEFAULT_FETCH_MODE => FETCH_ASSOC`、預處理語句、事務 `beginTransaction`/`commit`/`rollBack`。
- SQL 注入防禦:唯一使用參數綁定,嚴禁拼接。
- XSS 防禦:輸出編碼 `htmlspecialchars($str, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8')`、CSP 標頭。
- CSRF 防禦:同源檢查、Token、SameSite Cookie。
- 密碼儲存:`password_hash($pwd, PASSWORD_DEFAULT)` + `password_verify()`。
效能與工程化
- OpCache:`opcache.enable=1`、`opcache.jit=1255`(PHP 8.0)、`opcache.preload`(PHP 7.4)。
- 靜態分析:PHPStan Level 5+、Psalm、Rector 自動重構。
- 測試:Pest/PHPUnit、測試金字塔(單元多、集成少、E2E 極少)、Mutation Testing (Infection)。
- CI/CD:GitHub Actions / GitLab CI、代碼風格、靜態分析、測試、構建鏡像、部署。`composer install --no-dev --optimize-autoloader --classmap-authoritative`。
- 觀測:OpenTelemetry、Prometheus、Grafana、Jaeger、Sentry、ELK。
常用命令速查
php -v # 版本
php -m # 模組
php -i # phpinfo
php -l file.php # 語法檢查
php -r 'code' # 運行代碼
php -S 0.0.0.0:8000 # 內建服務器
composer require vendor/pkg
composer update --no-dev -o
composer dump-autoload -o