我有一个名为address.php的文件,其中包含一些函数。我想从命令行调用该文件中的特定函数,怎么样?函数的名称称为exportAddress,该函数需要单个参数
答案 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),可以通过运行
从外壳执行PHPphp -a
这将启动PHP的交互式shell。更多信息here。
使用PHP的外壳,运行时可以像从文件中一样获取文件。
因此,如果先前的命令是从包含文件的文件夹中运行的:
php > require 'myFile.php';
如果在子文件夹中:
php > require 'path/to/file/myFile.php';
然后执行myFile.php中定义的任何函数。
php > myFunction(myParamsIfAny);
我想您可以使用在同一文件中定义的任何变量,也可以要求包含所需变量的任何其他文件,尽管我没有尝试过。