- protected function _ci_load($_ci_data) {
- // Set the default data variables
- foreach (array('_ci_view', '_ci_vars', '_> foreach (array('_ci_view', '_ci_vars', '_ _ci_return') as $_ci_val) {
- $$_ci_val = (!isset($_ci_data[$_ci_val])) ? FALSE : $_ci_data[$_ci_val];
- }
-
-
-
- }
-
-
- $file_exists = FALSE;
- $_ci_ext = '.html';
- // Set the path to the requested file
- if ($_ci_path != '') {
- $_ci_x = explode(' /', $_ci_path);
- $_ci_file = end($_ci_x) . $_ci_ext;
- } else {
- //可以註解掉下面這一行,因為我們已經可以透過路由自動載入視圖
- //$_ci_ext = pathinfo($_ci_view, PATHINFO_EXTENSION);//取得視圖檔案的後綴名,預設為不傳遞後綴名的
- //拼接視圖路徑
- //載入設定,以方便取得mca(m:模組,c:控制器,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['module'] = @ $urlinfo[1] ? $urlinfo[1] : 'home';
- $urlinfo['controller'] = @$urlinfo[2] ? $urlinfo[2] : 'index';
- $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] : $info[' action'];
- //特殊處理common/header(包含公共頭部/底部)的情況
- $slasharr = explode('/', $_ci_view);
- if (count($slasharr) > 1) {
- $_ci_file = $m . '/' . $slasharr['0'].'/' .$slasharr['1'] . $_ci_ext;
- } else {
-
- //預設的視圖名稱(不包含後綴名)
- $view_name = $_ci_view == '' ? $a : $_ci_view; //如果沒有傳視圖的名稱,預設使用action的名稱
- $_ci_file = $m . '/' . $c . '/' . $view_name . $_ci_ext;
- }
- foreach ($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;
- }
-
- > break;
- }
- }
- }
-
- if (!$file_exists && !file_exists($_ci_path)) {
- show_error('Unable to load requested file: ' . $_ci_file);
- }
-
- // This allows anything loaded using $this->load (views, files, etc.)
- // to become accessible from within the Controller and Model functions.
-
- $_ci_CI = & get_instance();
- foreach (get_object_vars($_ci_CI) as $_ci_key => $_ci_var) {
- if (!isset($this_-this> $_ci_key)) {
- $this->$_ci_key = & $_ci_CI->$_ci_key;
- }
- }
-
- /*
- * Extract and cache variables
- /*
- * Extract and cache variables *
- * You can either set variables using the dedicated $this->load_vars()
- * function or via the second parameter of this function. We'll merge
- * the twotypes and cache the sooo views that are embed _ci_cached_vars, $_ci_vars); }
- extract($this->_ci_cached_vars);
-
- /*
- * 緩衝輸出
- *
- * 我們緩衝輸出有兩個原因:
- * 1.速度。您將獲得顯著的速度提升。
- * 2. 以便最終渲染的範本可以
- * 由輸出類別進行後處理。 為什麼我們
- *需要後製? 一方面,為了
- * 顯示經過的頁面載入時間。 除非我們
- * 可以在內容傳送到
- * 瀏覽器之前攔截內容,然後停止計時器,否則它不會準確。
- */
- ob_start();
-
- // 如果PHP 安裝不支援短標籤,我們將
- // 進行一些字串替換,將短標籤
- // 更改為標準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', '檔案載入: ' . $_ci_path);
-
- / / 根據請求返回文件數據
- if ($_ci_return === TRUE) {
- $buffer = ob_get_contents();
- @ob_end_clean();
- return $buffer;
- }
-
- /*
- * 刷新緩衝區...還是緩衝刷新器?
-
- * 為了允許視圖嵌套在
- * 其他視圖中,我們需要刷新每當
- * 我們超出輸出緩衝的第一級時,內容就會返回,以便
- * 第一個包含的
- * 模板和任何後續模板都可以正確地看到並包含它。哎喲!
- *
- */
- if (ob_get_level() > $this->_ci_ob_level 1) {
- ob_end_flush();
- } else {
- $_ci_CI-> ;out_put- append_output(ob_get_contents());
- @ob_end_clean();
- }
- }
複製代碼
|