我有一個具有一堆不同參數化函數的腳本。是否可以從命令行調用這些函數中的任何一個,並傳入參數,而不是必須在腳本中硬編碼函數調用?從命令行調用PHP腳本中的函數
FYI:我不知道如何在命令行
執行一個簡單的PHP腳本並不完全調用函數,記得script.php的大約有5種不同的功能,我期待只能撥打1,這是可能的
我有一個具有一堆不同參數化函數的腳本。是否可以從命令行調用這些函數中的任何一個,並傳入參數,而不是必須在腳本中硬編碼函數調用?從命令行調用PHP腳本中的函數
FYI:我不知道如何在命令行
執行一個簡單的PHP腳本並不完全調用函數,記得script.php的大約有5種不同的功能,我期待只能撥打1,這是可能的
不,你不能直接做到這一點。您有幾種選擇:
更新:
下面是使用第一傳遞的參數是一個函數調用的一個例子:
if(function_exists($argv[1]))
call_user_func_array($argv[1], $argv);
不是100%肯定你問什麼,但執行會像
php script.php arg1 arg2 arg3
你似乎已經知道了。在腳本本身中訪問這些參數的方法是使用變量,因此$argv[0]
將是腳本,$argv[1]
將是"arg1"
等。如果這樣做不起作用,則使用$_SERVER['argv']
。
至於選項,你可以用getopt
您可以讓命令行腳本使用其第一個參數作爲調用的函數,然後將參數傳遞給它。參數將出現在魔術數組變量中。
// Zero'th "argument" is just the name of your PHP script
$name_of_php_script = array_unshift($argv);
// Next argument will be your callback
$callback = array_unshift($argv);
// Remaining arguments are your parameters
call_user_func_array($callback, $argv);
很明顯,你可能想使事情變得安全更加複雜,或某種特殊的價值傳遞,但確實你的問題描述的基本邏輯。
您可以編寫一個選項,然後將該函數傳遞給例如myscript。PHP - 函數創建my_function
在腳本然後調用像
$argv[1]()
功能沒有,getopt的()可以,這是爲什麼upvoted? – wesside
因爲它回答了這個問題。 – artragis
@artragis沒有示例就沒用了。 – wesside