是否有一個基於字符串,數組或類似函數運行函數的PHP函數或命令?基本上,如果字符串「時間」通過,我想要time()
返回。理想情況下,我想這也支持傳遞的參數。不過,我只是希望這是個人功能。我不想eval()
整個代碼塊,原因很明顯。運行函數的PHP函數(基於字符串)?
這樣的事情是否存在 - 或者,最好是 - 它是否是PHP中的native?
是否有一個基於字符串,數組或類似函數運行函數的PHP函數或命令?基本上,如果字符串「時間」通過,我想要time()
返回。理想情況下,我想這也支持傳遞的參數。不過,我只是希望這是個人功能。我不想eval()
整個代碼塊,原因很明顯。運行函數的PHP函數(基於字符串)?
這樣的事情是否存在 - 或者,最好是 - 它是否是PHP中的native?
嘗試call_user_func()http://php.net/manual/en/function.call-user-func.php
第一個參數是表示函數名稱的字符串。第二個參數可以是單個參數或參數數組。
編輯:
它甚至會支持原生功能,如時間(),你問。試試看如下:
echo call_user_func('time');
您可以使用包含函數名稱的變量調用函數,並將任何參數傳遞給該函數。嘗試:
<?php
$func = 'strtoupper';
$res = $func('i am uppercase');
echo $res; // I AM UPPERCASE
見variable functions和variable variables爲好。如上所述,call_user_func()
也適用。
爲安全起見,您可以撥打:
if (function_exists($func)) { ... }
調用基礎,以確保你避免錯誤的功能之前。您可以使用ReflectionFunctionAbstract::getNumberOfParameters
來確定函數接受的參數數量。
嗯,有趣!我從來不知道這件事。感謝您的想法!儘管其他答案更好地回答了這個問題,但我最終可能會使用它,所以+1對你來說! – Nathanael 2012-07-28 06:19:09
啊,這看起來像是我在找的東西!謝謝!然而,在我接受你的答案之前,它只支持定義的功能嗎?或者是否支持所有函數(如'time()')? – Nathanael 2012-07-28 05:52:07
它絕對支持所有功能! – 2012-07-28 05:54:16