URI ルーティングを URL に含まれたセッション ID を切り捨てるために使ってしまうと、本来の目的で URI ルーティングの機能が使えない。盲点だった。
この辺の機能を潰さずにこれを実現するとなると、やはりコアクラスのメソッドをオーバーライドしなければいけなかった。
オーバーライドするメソッドを吟味した結果、最初は Router クラスにしようかと思ったが、取り出したセッション ID を記憶するためのクラスを Router クラスにはしたくなかったので、結局 URI クラスの _fetch_uri_string() をオーバーライドして return する直前にセッション ID が存在する場合に切り出すような形で実装した。
そして URL にセッション ID が含まれていた場合は $this->uri->session_id() などとする事で取得できるようなメソッドを増設した。
複数の記事に渡り弄ってきたためまとまりが悪くなったので、今回弄ったファイルをまとめてアップロードすることにした。
まだ問題が出てくるかも知れないけど取り合えず一区切りということで。
CI_MobileSession.zip