【问题标题】:PHP OOP return into variable itselfPHP OOP 返回到变量本身
【发布时间】:2015-08-15 14:19:12
【问题描述】:

我需要与return 类似但“指向内部”的东西。假设我有课:

class A {
  [...]
  public function say_hello() {
    return 'Hello';
  }
}

有什么方法可以将返回值用于对象变量本身,例如:

而不是

$object = new A;
$object = $object->say_hello(); // $object has value 'Hello'

简单

$object = new A;
$object->say_hello(); // $object has value 'Hello'

我希望它是可以理解的。

感谢您的帮助!

编辑:

我想在需要调用一个类的情况下使用它,例如:

class A {
  [...]
  public function call class B() {
    return new B();
  }
}

最终保存在 B 类(C、D 等)的变量对象中,而不是 A。

【问题讨论】:

  • 你想做什么?
  • 第一种方法$object = $object->say_hell();会覆盖之前的$object,使其成为Hello的字符串,而第二种方法-$object->say_hello();将返回Hello字符串,但不会被赋值对任何事情......所以正如 Riz 所说,你想做什么?
  • 我希望最后一个代码块中的情况将变量 $object 更改为“自动”成为它的返回值(无需像 $object = $object->say_hello(); 那样重写)
  • @Gomi 真的不知道你为什么要这样做,只是通过引用传递它自己的对象:class A { public function say_hello(&$object) { $object = 'Hello'; } } $o = new A; $o->say_hello($o); var_dump($o);

标签: php function oop return


【解决方案1】:

我想不出想要这样做的充分理由,但您可以做类似的事情,您可以轻松访问最后返回的值:

class A
{
    private static $last_returned;
    public function __invoke()
    {
        return self::$last_returned;
    }
    public function __call($name, $arguments)
    {
        self::$last_returned = call_user_func_array([$this, $name], $arguments);
        return self::$last_returned; 
    }
    private function say_hello() {
        return "hello";
    }
}

$object = new A;
$object->say_hello();
echo $object(); //"hello";

【讨论】:

  • 我试试看。谢谢你。我想主要在我从另一个班级呼叫一个班级的情况下使用它。
猜你喜欢
  • 2014-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-16
  • 2011-01-20
  • 2019-09-18
  • 2011-05-09
相关资源
最近更新 更多