我有一个名为 address.php 的文件,其中包含一些函数。我想从命令行调用该文件中的特定函数。如何?
该函数的名称称为 exportAddress,该函数需要一个参数。
我有一个名为 address.php 的文件,其中包含一些函数。我想从命令行调用该文件中的特定函数。如何?
该函数的名称称为 exportAddress,该函数需要一个参数。
通过使用该-r
参数,您可以在线运行脚本。
php -r "require 'address.php'; exportAddress(12345);"
没有其他选择。PHP 中的函数只能由 PHP 脚本调用。
采用
php -r 'include "/var/www/test/address.php";exportAddress(1);'
where "/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 官方文档中了解更多信息。为了完整起见,这也称为参数解包。