[英]Call a PHP function from the command line
我有一個名為 address.php 的文件,其中包含一些函數。 我想從命令行調用該文件中的特定函數。 如何?
該函數的名稱稱為 exportAddress,該函數需要一個參數。
通過使用-r
參數,您可以在線運行腳本。
php -r "require 'address.php'; exportAddress(12345);"
沒有其他選擇。 PHP 中的函數只能由 PHP 腳本調用。
采用
php -r 'include "/var/www/test/address.php";exportAddress(1);'
其中"/var/www/test/arr.php"
是文件名,包括路徑,而exportAddress()
是該文件中的一個函數。
將其添加到文件“/var/www/test/address.php”的頂部...
foreach ($argv as $i=>$arg )
{
if ( $arg == "exportAddress" )
{
exportAddress($argv[$i+1]);
}
}
然后從命令行執行:
php /var/www/test/address.php exportAddress 12345
您可以按如下方式組織文件“somefile.php”:
function func1(){....}
function func2(){....}
function func3(){....}
....
foreach ($argv AS $arg){
function_exists($arg) AND call_user_func($arg);
}
然后從命令行或 Linux cronjob 運行以下命令:
php /path/to/somefile.php arg1 arg2 arg3 ...
從 PHP 5.1.0(Windows 上的 7.1.0)開始,PHP 可以通過運行從 shell 執行
php -a
這將啟動 PHP 的交互式 shell。 更多信息在這里。
使用 PHP 的 shell,運行時您可以像從文件中獲取文件一樣獲取文件。
因此,如果上一個命令是從包含該文件的文件夾運行的:
php > require 'myFile.php';
如果它在子文件夾中:
php > require 'path/to/file/myFile.php';
然后執行 myFile.php 中定義的任何函數。
php > myFunction(myParamsIfAny);
我想您可以使用同一文件中定義的任何變量,或者需要包含所需變量的任何其他文件,盡管我還沒有嘗試過。
要擴展 Samer Ata 和 Simon Rodan 的答案,您可以使用以下內容來執行具有任意數量參數的任何函數:
if(isset($argv[1]) && function_exists($argv[1])) {
$parameters = array_slice($argv, 2);
call_user_func($argv[1], ...$parameters);
}
這是通過從$argv
中刪除腳本和函數名稱,然后使用擴展運算符 ( ...
) 將數組中的每個元素解釋為call_user_func
的參數來完成的。
從 PHP 5.6 開始支持運算符(並且 5.5 可以使用函數做一些事情)。 您可以在官方 PHP 文檔中閱讀更多相關信息。 為了完整起見,這也稱為參數拆包。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.