3

URLヘルパー(MY_url_helper)を拡張しています。ヘルパー関数内でbase_url()にアクセスするにはどうすればよいですか?私は実際にbase_url()をオーバーライドしているので、元のbase_urlを呼び出す必要があります。

編集1:

これは機能しません:

$CI =& get_instance();
$CI->load->helper('url');
$base_url = $CI->base_url();
4

1 に答える 1

2

残念ながら、組み込みのヘルパー関数はグローバル php 名​​前空間で定義されています。ある名前の関数を定義するbase_urlと、同じ名前の別の関数を定義できなくなるためbase_url、元のヘルパーから元の関数をロードすることはできません。 「どこか他の場所」で使用します。

このため、CI の組み込みヘルパー ファイルは、次のような if ブロックで関数を定義します。

if ( ! function_exists('FUNCTION_NAME'))
// ...
}

そのため、オーバーライドされたバージョンで元のヘルパー ファイルを読み込んだとしても、致命的なエラーは発生しませんが、意味のあることも何もしません。

具体的なケースでは、base_url の実装は基本的に次のとおりです。

return get_instance()->config->base_url($uri);

のオーバーライドされたバージョンにそれを持ち上げることができますbase_url

于 2012-09-24T14:38:01.787 に答える