从命令行调用php函数

时间:2012-12-07 11:10:33

标签: php function command-line-interface

我有一个名为address.php的文件,其中包含一些函数。我想从命令行调用该文件中的特定函数,怎么样?函数的名称称为exportAddress,该函数需要单个参数

6 个答案:

答案 0 :(得分:59)

通过使用-r参数,您可以在线运行脚本。

php -r "require 'address.php'; exportAddress(12345);"

没有其他选择。 PHP中的函数只能由PHP脚本调用。

答案 1 :(得分:3)

将此添加到文件“/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

答案 2 :(得分:2)

php -r'include“/var/www/test/address.php";exportAddress(1);'

其中"/var/www/test/arr.php"是文件名,包括路径,exportAddress()是该文件中的函数

答案 3 :(得分:1)

你可以按如下方式组织你的文件“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 ...

答案 4 :(得分:1)

要扩展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的参数来完成的。 / p>

PHP 5.6及更高版本支持该运算符(而5.5可以使用函数来完成某些事情)。您可以在the official PHP documentation中了解更多信息。 为了完整起见,这也称为参数解压缩。

答案 5 :(得分:1)

从PHP 5.1.0开始(在Windows上为7.1.0),可以通过运行

从外壳执行PHP
php -a

这将启动PHP的交互式shell。更多信息here

使用PHP的外壳,运行时可以像从文件中一样获取文件。

因此,如果先前的命令是从包含文件的文件夹中运行的:

php > require 'myFile.php';

如果在子文件夹中:

php > require 'path/to/file/myFile.php';

然后执行myFile.php中定义的任何函数。

php > myFunction(myParamsIfAny);

我想您可以使用在同一文件中定义的任何变量,也可以要求包含所需变量的任何其他文件,尽管我没有尝试过。