2

URI のセグメントは通常、Codeigniter では次のパターンに従います。

XYZ.com/Class/Method/param1/param2

これは、呼び出されたメソッドがコントローラーで定義されている場合は期待どおりに機能しますが、URI に未定義のメソッドを指定して、未定義のメソッドを処理する __call マジック メソッドを呼び出すと、何も機能しません。

__call は、URI から未定義のメソッドを呼び出したときではなく、コントローラー自体から呼び出された場合にのみ呼び出されます

説明はありますか?

ありがとう

4

2 に答える 2

4

CodeIgniter には、 があり_remapます。だからあなたが行くなら

XYZ.com/Class/UndefinedMethod/param1/param2

次に_remap呼び出されます (実際に_remapは常に呼び出されるため、存在するメソッドが正しく呼び出されるようにする必要があります)。

function _remap($method, $params=array()){
    $funcs = get_class_methods($this);
    if(in_array($method, $funcs)){ // We are trying to go to a method in this class
        return call_user_func_array(array($this, $method), $params);
    }
    // else do something else
}
于 2012-08-17T21:00:24.950 に答える
0

サーバー (Apache?) のログ ファイルを調べます。間違いなく、処理を中止させる PHP エラーが表示されます。未定義の関数をエラー ページに再マッピングしてカバーしない限り、ランダムな URL では「何も起こらない」ように見えます。

于 2012-08-17T21:01:54.647 に答える