アドレス参照しているのにっ

原因がわかりました。dispatch() で、$this->params を、controller->params にアドレスで渡しています。その中で内部メソッド _invoke() を call する時に、引数で渡しています。しかし、この _invoke() ではアドレス参照で受け取っていません。なので、_invoke() の中で call されたメソッドの中でいくら変更をしても変化がなかったわけです。どうせ内部でしか使わないメソッドなんだから、そのまま使えばいいのに。

まぁ dispatcher の中で処理している変数を controller で、書き換える方がおかしいのですが。もしかして controller でいじれないようにしたいから?

なんか他に良い方法ないかなぁ。Route で出来そうな気もするんですが。