php从类内的函数列表中获取返回变量


php get return variable(s) from function list inside a class

如何从类内的函数访问单个整个多个返回

通常从一个函数,我可以访问多个返回,如

list($name, $number ) = functionFromSomeClass($a, $b, $c);
$n1 = $name;
$n2 = $number;

但是当这个函数在一个类中时,我似乎在访问整个或单个返回时遇到了问题

class MyClass{
    public function newFunc( $var_1, $var_2 ) {
        require_once('someOtherClass.php');
        // process

        list($name, $number ) = functionFromSomeOtherClass($a, $b, $c);
    }

}

然后访问:

$myclass = new MyClass;
$name = $myclass->newFunc($q, $w)->$name;

或者,我该如何返回整个列表?

$myclass = new MyClass;
list($name, $number) = $myclass->newFunc($q, $w);

如果你想访问类中的另一个函数,你应该:

$this->functionFromSomeOtherClass($a, $b, $c);

换句话说:

class MyClass
{
    public function newFunc( $var_1, $var_2 ) {
        require_once('someOtherClass.php');
        // process
        $someotherclass = new someOtherClass();
        list($name, $number ) = $someotherclass->functionFromSomeOtherClass($a, $b, $c);
    }

}

使用语法时

list($var1, $var2, ...) = <expression>;

这只是意味着<expression>必须对数组求值,并且变量将从数组的连续元素中分配。<expression>可以是任何计算,包括函数或方法调用;你写它的方式和正常分配时一样。但如果是函数或方法调用,则函数/方法必须返回一个数组才能有效。

当从另一个类调用函数时,使用它并没有什么特别之处。

您需要创建另一个类的实例,或者将其作为静态函数调用,具体取决于方法的声明方式:

someOtherClass.php:

class OtherClass
{
    public function functionFromSomeOtherClass($a, $b, $c)
    {
         return $a + $b + $c;
    }
}

MyClass.php:

class MyClass{
    public function newFunc( $var_1, $var_2 ) {
        require_once('someOtherClass.php');
        // Instance call:
        $otherClass = new OtherClass();
        list($name, $number ) = $otherClass->functionFromSomeOtherClass($a, $b, $c);
        // Static call:
        list($name, $number ) = OtherClass::functionFromSomeOtherClass($a, $b, $c);
    }
}

如果我理解您的意思,那么您希望传递其他类的值,然后在调用函数时将它们传递到不同的位置。你可以用几种方法做到这一点。一种方法是,在函数中返回值。另一种方法是,您可以像这样声明公共类变量:

class MyClass{
    public $name,$number;
    public function newFunc( $var_1, $var_2 ) {
        require_once('someOtherClass.php');
        // process

        list($this->name, $this->number ) = functionFromSomeOtherClass($a, $b, $c);
    }
}

当你调用这样的函数时:

$myClass = new MyClass;

您可以简单地调用一个函数并在此处访问变量:

$myClass->newFunc($var1,$var2);
$n1 = $myClass->name;
$n2 = $myClass->number;

同样,另一个选项只是返回另一个类的结果,如下所示:

class MyClass{
    public $name,$number;
    public function newFunc( $var_1, $var_2 ) {
        require_once('someOtherClass.php');
        // process
        $otherClass = new OtherClass;
        return $otherCLass->functionFromSomeOtherClass($a, $b, $c);
    }
}
$myClass = new MyClass;
list($name,$number) = $myClass->newFunc($var1,$var2);

如果这不是你想要的,正如我在评论中所建议的,那么有一个更详细的例子会有所帮助。

您甚至没有返回。

function get_multi() {
    return array(1, 2, 3);
}
list($a, $b, $c) = get_multi();