簡體   English   中英

從命令行調用 PHP 函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM