Function 如何从CLI调用PHP函数?

Function 如何从CLI调用PHP函数?,function,call,command-line-interface,php,Function,Call,Command Line Interface,Php,假设我在function.php中有一个私有函数addUser(),它将$username作为输入变量,并执行一些操作: function addUser($username) { //do some stuff } 现在我想调用这个函数并传递值$username,如果可能的话,可以使用PHPCLI。我想这在function.php之外是行不通的,因为它是私有的,但是我怎么做呢?您可以在数组中传递命令行参数: 将命令行argumenst以数组形式传递: 您可以使用$argv$argv[0]

假设我在
function.php
中有一个私有函数
addUser()
,它将
$username
作为输入变量,并执行一些操作:

function addUser($username) {

//do some stuff

}

现在我想调用这个函数并传递值$username,如果可能的话,可以使用PHPCLI。我想这在
function.php之外是行不通的,因为它是私有的,但是我怎么做呢?

您可以在数组中传递命令行参数:


将命令行argumenst以数组形式传递:


您可以使用$argv$argv[0]=文件名,$argv[1]=文件名后的第一件事

即php function.php“some arg”
将是addUser(“某个arg”)

您可以使用$argv$argv[0]=文件名,$argv[1]=文件名后的第一件事

即php function.php“some arg” 将是addUser(“某个arg”)

这应该行得通。因为您基本上是在执行
之间的所有代码。在其中,您可以包括
function.php
,并且应该适当地调用
addUser()

这应该行得通。因为您基本上是在执行
之间的所有代码。在其中,您可以包括
function.php
,并且应该适当地调用
addUser()

这对我有用


这对我有用

为什么是-1?所以,应该在1—JavdBrg只写一个注释的时候强制性地写一个注释。AGV< <代码> >代码> $ARGV @ JvdBerg,在你的个人资料中只有几张最近的投票,这并不是我们认为滥用的东西。如果这是继续的,让我们知道。我会考虑使用Paul-COSOLeE.CudidLe::但是纯OL'$ARGV确实有效。@ JvdBrg感谢提示,我尝试用<代码> PHP函数.php Jang-doe < /Cord>。但是现在我得到一个错误,告诉我<代码> PHP解析错误:语法错误,意外的TSY字符串,期望Ty函数< />代码>。似乎函数无法处理字符串john_doe,但这很奇怪。你知道为什么吗?为什么-1?所以,应该在1—JavdBrg只写一个注释的时候强制性地写一个注释。AGV< <代码> >代码> $ARGV @ JvdBerg,在你的个人资料中只有几张最近的投票,这并不是我们认为滥用的东西。如果这是继续的,让我们知道。我会考虑使用Paul-COSOLeE.CudidLe::但是纯OL'$ARGV确实有效。@ JvdBrg感谢提示,我尝试用<代码> PHP函数.php Jang-doe < /Cord>。但是现在我得到一个错误,告诉我<代码> PHP解析错误:语法错误,意外的TSY字符串,期望Ty函数< />代码>。似乎函数无法处理字符串john_doe,但这很奇怪。你知道为什么吗?我不明白“因为这是私人的,所以不会在外面工作”的意思。你能解释一下你的意思吗?基本上,类方法或函数的可见性与php运行的上下文无关。我不理解“由于它是私有的,所以无法从外部工作”。你能解释一下你的意思吗?基本上,类方法或函数的可见性与php运行的上下文无关。
function addUser($username) {

//do some stuff

}

addUser( $argv[1] );
php -r 'include("/absolute/path/to/function.php"); addUser("some user");'
function funcb()
{
    echo 'yes';
}

if (php_sapi_name() === 'cli') {
    if (count($argv) === 1) {
        echo 'See help command'.PHP_EOL;
        exit();
    }

    if (function_exists($argv[1])) {
        $func = $argv[1];
        array_shift($argv);
        array_shift($argv);
        $func(...$argv);
    }
}