次のようなイベントオブジェクトがあります。
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
します。たとえば、String
valueメソッドとgetterメソッド、setterメソッドのみを保持するクラスを作成します。setInput
メソッドをに追加しますInputEvent
が、それでもListener
上記の例のように値に割り当てるほどエレガントではありません。