#### 1. 可變函數 --- 在PHP中如果將`函數名稱`賦予字符串類型的變量, 但是在使用該變量時, 如果帶有小括號, 那么PHP引擎將解析函數 PHP官方手冊可變函數概念 : [https://www.php.net/manual/zh/functions.variable-functions.php](https://www.php.net/manual/zh/functions.variable-functions.php) 特別注意 : 可變函數不能用于例如 `echo()、print()、unset()、isset、empty()、include()、require()` 以及類似的語言結構。這些語言結構想要用作可變函數則需要使用自己的包裝函數(自定義函數)實現。 #### 2. 使用示例 --- **正確使用** ```php $debug = 'var_dump'; $debug(true); //等價于var_dump(true); ``` **錯誤示范: echo 是一個語言結構, 并不是函數** ```php $bug = 'echo'; $bug(456);//Call to undefined function echo() ``` **包裝 `echo` 的可變函數** ```php $bug = 'echoit'; $bug(456); /** * 使用echo的包裝函數 */ function echoit($data) { echo $data; } ``` #### 3. 函數補充 --- 返回所有已定義函數的二維數組 ```php get_defined_functions(); ``` `user` 自定義函數 `internal` 系統函數 ``` ^ array:2 [▼ "internal" => array:1291 [?] "user" => array:59 [?] ] ```