cilab
webma****@cilab*****
2007年 12月 6日 (木) 10:51:36 JST
CILabです Kenjiさんが言っているのは、「$this->メンバー変数」のことでなく、 たとえば、再マップしようとする時、 1) 特定の場合だけ従来通りのルールでメソッドを呼び出したい場合 2) 特定の場合以外は従来通りのルールでメソッドを呼び出したい場合 の2パターンがあって、 マニュアルのコードは、色々な使い方が想定されるかもしれませんが、 たとえば、 1)のパターンの場合の例では? ということですよね? たとえばショッピングカートなどの商品の表示に関するクラスがあったとして: class Product extends Controller { function Product(){ parent::Controller(); } function _remap($method) { if ($method == 'listup_all') { $this->$method(); //$this->listup_all(); としてもOK } else { $this->detail($method); //$methodにはproductIdが入るのを想定 } } function detail($productId){ echo 'productID='.$productId.'の商品詳細のページを表示'; } function listup_all(){ echo 'すべての商品をリストアップする'; } } /* このコンテキストでは URL:index.php/product/[商品ID] のときは、 detail([商品ID]); で商品ページを表示 (URLでメソッド名「detail」を省略した形式を使えるようにする) ただし、URL:index.php/product/listup_all の時だけは、普通に listup_all(); を呼び出して商品一覧を表示する */ 私も、typoでなくて、これはこれで良いように思えます。 ──────────── CILab webma****@cilab***** http://www.cilab.info/ Kenji さんは書きました: > On Thu, 06 Dec 2007 00:58:34 +0900 > "Kenichi Ando(Neo,Inc)" <ando****@neo-n*****> wrote: > > >> bossatamaです。 >> > > >>> このケースでは、 >>> >>> $this->$method() は、$this->some_method() になります。 >>> >>> ただの typo とも思えますが、 >>> some_method 以外は default_method が面倒をみる、 >>> というコードなのかな?とも思えるわけです。 >>> >> 動くのかな?と思い、試してみました。 >> >> 例: >> function _remap($method) >> { >> if ($method == 'some_method') >> { >> $this->$method($method); >> } >> else >> { >> $this->default_method(); >> } >> } >> function some_method($string) >> { >> return $string; >> } >> >> これはポイントずれてますか? >> > > 合っています。 > > > >> 確かに期待通り、「some_method」が帰ってきます。 >> > > そのように、動きますよね。 > > > >> とてもユーザガイドはこれを意図しているとは思えないのですが・・? >> > > 「これを意図しているとは思えない」理由を教えてください。 > 私は、ちょっと思い付きませんでした。 > > > CI本家のフォーラムに投げてみるのがいいんじゃないでしょうか? > > > // Kenji > > _______________________________________________ > Codeigniter-users mailing list > Codei****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users > > > >