44

我有一个名为 address.php 的文件,其中包含一些函数。我想从命令行调用该文件中的特定函数。如何?

该函数的名称称为 exportAddress,该函数需要一个参数。

4

6 回答 6

89

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

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

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

于 2012-12-07T11:12:52.163 回答
6

采用

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

where "/var/www/test/arr.php"是文件名,包括路径,并且exportAddress()是该文件中的一个函数。

于 2012-12-07T11:19:44.377 回答
4

将此添加到文件“/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
于 2014-09-04T05:12:14.800 回答
4

您可以按如下方式组织您的文件“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 ...
于 2015-11-18T09:50:23.150 回答
2

自 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);

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

于 2020-05-15T19:19:17.130 回答
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.

从 PHP 5.6 开始支持操作符(5.5 可以使用函数做一些事情)。您可以在PHP 官方文档中了解更多信息。为了完整起见,这也称为参数解包。

于 2020-02-25T07:53:58.210 回答