0

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

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

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

5 回答 5

2

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

$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);
    }


}
于 2013-08-01T17:14:55.810 回答
2

当你使用语法

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

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

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

于 2013-08-01T17:21:25.423 回答
2

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

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

}
于 2013-08-01T17:17:09.120 回答
1

你甚至不回来。

function get_multi() {
    return array(1, 2, 3);
}

list($a, $b, $c) = get_multi();
于 2013-08-01T17:20:53.950 回答
1

如果我明白你在说什么,你正在寻找传递一些其他类的值,然后在调用函数时将它们传递到不同的位置。您可以通过几种方式做到这一点。一种方法是,您将在函数中返回值。另一种方式,您可以像这样声明公共类变量:

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

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

于 2013-08-01T17:32:25.047 回答