Agavi で session.use_trans_sid を使う

php.ini, ini_set() など php の設定で session.use_trans_sid を On にしたところ、若干気持ち悪いことになった。


Agavi の Routing::gen() は、URLクエリパラメータのセパレータに & を使うのだけど(こっちが正式っぽい)、session.use_trans_sid は & を使うので、セパレータとして "&" と "&" が混在してしまう。

例えば、こんな感じ。

<a href="/index.php/?var1=val1&amp;var2=val2&sess_id=xxxxxxxxxx">hoge</a>


で、うーむと思って見てみると、AgaviWebRouting のコンストラクタの中で、

    $this->defaultGenOptions = array_merge($this->defaultGenOptions, array(
      'separator' => '&amp;',
      'use_trans_sid' => false,
      'scheme' => null,
      'authority' => null,
      'host' => null,
      'port' => null,
      'fragment' => null,
    ));

となっていたので、上記の use_trans_sid を true にすればよいだけだったみたい。結局、session.use_trans_sid を変える必要もなかった。なんでいちいちソースを見なきゃならないんだ…。