php - 返回对象属性引用的函数

标签 php reference

我有一个如下所示的事件对象:

class InputEvent
{
    protected $input;

    public function __construct(&$input)
    {
        $this->input = &$input;
    }

    public function getInput()
    {
         return $this->input;
    }
}

现在,由于 $input 是一个字符串,我必须通过引用传递它。但是,当我创建事件监听器时,输入值不会更改,因为 getInput 函数返回 $input 值而不是对 $input 的引用属性。

class Listener
{
    public function myEvent(InputEvent $event)
    {
         $input = $event->getInput();

         // doesn't change InputEvent::input property
         $input = "asd";
    }
}

有没有办法让我返回对 $input 值的引用,以便它在事件对象内发生更改?

我可以制定两种解决方法,但两者都是......嗯,解决方法,并不是很漂亮。

  1. $input 包装到一个类中,例如创建一个 String 类,该类仅保存 value 和 getter、setter 方法。

    <
  2. InputEvent 添加 setInput 方法,但仍然不如将其分配给 Listener 中的值那么优雅上面的例子。

最佳答案

正如上面提到的 Moonwave99,您需要使用 setter。在您的 InputEvent 类中添加方法:

public function setInput(&$s) {
    $this->input = $s;
}

或者您可以返回一个引用:

public function &getInputRef() {
    return $this->input;
}
$input = &$event->getInputRef();

我认为应该起到同样的作用。

关于php - 返回对象属性引用的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14822993/

相关文章:

c++ - 创建右值并通过转发将其传递给函数

PHP 合并两个数组以组合以获得预期的o/p

PHP 系统()参数

php - 构建 Reducisaurus URL

c 使用静态变量查找数字的倍数?

c++ - 重载抽象虚方法返回模板参数 T& 作为具体参数 short*&

php - php 和 MySQL 中简单的喜欢/不喜欢评级系统

php - Laravel 查询生成器,其中 NULL 没有结果

java - 检查泛型java中的引用类型

java - 枚举的枚举为 NULL