次のようなイベントオブジェクトがあります。
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イベントオブジェクト内で変更されるように、値への参照を返す方法はありますか?
私は2つの回避策を作成できますが、どちらも.....まあ、回避策であり、実際にはきれいではありません。
クラスにラップ
$inputします。たとえば、Stringvalueメソッドとgetterメソッド、setterメソッドのみを保持するクラスを作成します。setInputメソッドをに追加しますInputEventが、それでもListener上記の例のように値に割り当てるほどエレガントではありません。