ci のローダー機能を変更しました。誰か助けてくれませんか?
リリース: 2016-07-25 08:47:56
- protected function _ci_load($_ci_data) {
- // デフォルトのデータ変数を設定します
- foreach (array('_ci_view', '_ci_vars', '_ci_path', '_ci_return') as $_ci_val) {
- $$_ci_val = (!isset($_ci_data[$_ci_val])) ? FALSE : $_ci_data[$_ci_val];
- }
-
-
- $file_exists = FALSE;
- $_ci_ext = '.html';
- // へのパスを設定します要求されたファイル
- if ($_ci_path != '') {
- $_ci_x =explode('/', $_ci_path);
- $_ci_file = end($_ci_x) . $_ci_ext;
- } else {
- //コメント可能out 次の行は、すでにルーティングを通じてビューを自動的にロードできるためです
- //$_ci_ext = pathinfo($_ci_view, PATHINFO_EXTENSION) //ビュー ファイルのサフィックス名を取得します。デフォルトではサフィックス名は渡されません
- ; //ビューのパスを結合します
- //mca(m: module, c:controller, a: action) の値を簡単に取得するために設定をロードします
- $this->config = &load_class('Config', 'core') ;
- $directory_trigger = $this->config->item('directory_trigger');
- $controller_trigger = $this->config->item('controller_trigger');
- $function_trigger = $this-> config->item( 'function_trigger');
-
- //ユーザーが疑似静的を設定しない場合は、pathinfo を使用します
- $urlinfo =explode('/', $_SERVER['REQUEST_URI']);
- $urlinfo[ 'モジュール'] = @$ urlinfo[1] ? $urlinfo[1] : 'ホーム';
- $urlinfo['コントローラー'] = @$urlinfo[2] : 'インデックス';
- $ urlinfo['action'] = @$urlinfo[3] ? $urlinfo[3] : 'index';
-
-
- $m = isset($_GET[$directory_trigger]) && $_GET[$directory_trigger]!='' ? $_GET[$directory_trigger] : $urlinfo['module'];
- $c =isset($_GET[$controller_trigger]) && $_GET[$controller_trigger]!='' $_GET[$controller_trigger] : $urlinfo ['controller'];
- $a = isset($_GET[$function_trigger]) && $_GET[$function_trigger] !=''? $_GET[$function_trigger] : $urlinfo['action'];
- //特殊common/header (public head/bottom を含む) を処理します
- $slasharr =explode('/', $_ci_view);
- if (count($slasharr) > 1) {
- $_ci_file = $m . lasharr['0 '].'/' .$slasharr['1'] . $_ci_ext;
- } else {
-
- //デフォルトのビュー名 (サフィックス名を除く)
- $view_name = $_ci_view == '' $ ? a : $_ci_view; // ビュー名が渡されない場合、デフォルトでアクション名が使用されます
- $_ci_file = $m . '/' . $this-> ;_ci_view_paths as $view_file => $cascade) {
- if (file_exists($view_file . $_ci_file)) {
- $_ci_path = $view_file . $_ci_file;
- $file_exists = TRUE;
- Break;
- }
-
- if ( !$cascade) {
- Break;
- }
- }
- }
-
- if (!$file_exists && !file_exists($_ci_path)) {
- show_error('要求されたファイルをロードできません: ' . $_ci_file) ;
- }
-
- // これにより、$this->load を使用してロードされたもの (ビュー、ファイルなど)
- // コントローラーおよびモデル関数内からアクセスできるようになります。
-
- $_ci_CI = & get_instance();
- foreach (get_object_vars ($_ci_CI) as $_ci_key => $_ci_var) {
- if (!isset($this->$_ci_key)) {
- $this->gt;$_ci_key = & $_ci_CI->$ _ci_key;
- }
- }
-
- /*
- * 変数の抽出とキャッシュ
- *
- * 専用の $this->load_vars()
- * 関数を使用するか、この関数の 2 番目のパラメーターを介して変数を設定できます。
- * 2 つのタイプをマージし、キャッシュすることで、その中に埋め込まれているビューが
- * 他のビューがこれらの変数にアクセスできるようになります。
- */
- if (is_array($_ci_vars)) {
- $this->_ci_cached_vars = array_merge ($this- >_ci_cached_vars, $_ci_vars);
- }
- extract($this->_ci_cached_vars);
-
- /*
- * 出力をバッファリングします
- *
- * 出力をバッファリングする理由は 2 つあります:
- * 1. 速度。速度が大幅に向上します
- * 2。これにより、最終的にレンダリングされたテンプレートを出力クラスで後処理できます
- *。 なぜ
- * 後処理が必要なのでしょうか? まず、
- * 経過したページ読み込み時間を表示するためです。
- * ブラウザに送信される直前にコンテンツをインターセプトできなければ、 * タイマーを停止することはできません。
- */
- ob_start();
-
- // PHP インストールが短いタグをサポートしていない場合well
- // 短いタグを変更して、少し文字列を置換します
- // 標準の PHP echo ステートメントに変更します
-
- if ((bool) @ini_get('short_open_tag') === FALSE AND config_item('rewrite_short_tags') == TRUE) {
- echo eval('?>' . preg_replace("/;*s*?>/", "; ?>", str_replace('=', ' } else {
- include($_ci_path); // include() と include_once() では、同じ名前を持つ複数のビューが許可されます
- }
- log_message('debug', 'Fileloaded: ' . $_ci_path);
- // 要求された場合はファイル データを返します
- if ( $_ci_return === TRUE) {
- $buffer = ob_get_contents();
- @ob_end_clean();
- return $buffer;
- }
- /*
- * バッファをフラッシュします... それともフラッシャーをバフしますか?
- *
- *ビューを
- * 他のビュー内でネストできるようにするには、いつでもコンテンツをフラッシュして戻す必要があります
- * 出力バッファリングの最初のレベルを超えているため、
- * 最初にインクルードされたビューで適切に表示およびインクルードできるようになります
- * テンプレートとそれ以降のテンプレート。 Oy!
- *
- */
- if (ob_get_level() > $this->_ci_ob_level + 1) {
- ob_end_flush();
- } else {
- $_ci_CI->output->append_output(ob_get_contents()) ;
- @ob_end_clean();
- }
- }
-
复制代
|
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31