PHP 可變函數(shù)

作者:辰風(fēng)沐陽 閱讀:1608 發(fā)布時(shí)間:2021-05-20 上次更新:2021-05-21

1. 可變函數(shù)


在PHP中如果將函數(shù)名稱賦予字符串類型的變量, 但是在使用該變量時(shí), 如果帶有小括號(hào), 那么PHP引擎將解析函數(shù)

PHP官方手冊(cè)可變函數(shù)概念 : https://www.php.net/manual/zh/functions.variable-functions.php

特別注意 : 可變函數(shù)不能用于例如 echo()、print()、unset()、isset、empty()、include()、require() 以及類似的語言結(jié)構(gòu)。這些語言結(jié)構(gòu)想要用作可變函數(shù)則需要使用自己的包裝函數(shù)(自定義函數(shù))實(shí)現(xiàn)。

2. 使用示例


正確使用

  1. $debug = 'var_dump';
  2. $debug(true); //等價(jià)于var_dump(true);

錯(cuò)誤示范: echo 是一個(gè)語言結(jié)構(gòu), 并不是函數(shù)

  1. $bug = 'echo';
  2. $bug(456);//Call to undefined function echo()

包裝 echo 的可變函數(shù)

  1. $bug = 'echoit';
  2. $bug(456);
  3. /**
  4. * 使用echo的包裝函數(shù)
  5. */
  6. function echoit($data)
  7. {
  8. echo $data;
  9. }

3. 函數(shù)補(bǔ)充


返回所有已定義函數(shù)的二維數(shù)組

  1. get_defined_functions();

user 自定義函數(shù)

internal 系統(tǒng)函數(shù)

  1. ^ array:2 [▼
  2. "internal" => array:1291 [?]
  3. "user" => array:59 [?]
  4. ]

標(biāo)簽: php