[Codeigniter-users] ユーザガイドの修正(general/controllers.html#remapping)

Back to archive index

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
>
>
>
>   




Codeigniter-users メーリングリストの案内
Back to archive index