- 보호 함수 _ci_load($_ci_data) {
- // 기본 데이터 변수 설정
- foreach (array('_ci_view', '_ci_vars', '_ci_path', ' _ci_return') $_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 =explore(' /', $_ci_path);
- $_ci_file = end($_ci_x) . $_ci_ext;
- } else {
- //이미 라우팅을 통해 뷰를 자동으로 로드할 수 있으므로 다음 줄을 주석 처리할 수 있습니다.
- //$_ci_ext = pathinfo($_ci_view, PATHINFO_EXTENSION);//뷰 파일의 접미사 이름을 가져옵니다. 기본값은 접미사 이름을 전달하지 않는 것입니다.
- //뷰 경로 접합
- //로드 중 편의를 위한 구성 mca 값 가져오기(m: 모듈, c: 컨트롤러, a: 작업)
- $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 =explore('/', $_SERVER['REQUEST_URI']);
- $urlinfo ['모듈'] = @$urlinfo[1] ? $urlinfo[1] : '홈';
- $urlinfo['controller'] = @$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] : $urlinfo['action'];
- //공통/헤더 특수 처리(공통 헤더/하단 포함)
- $slasharr =Explode('/', $_ci_view);
- if (count($slasharr) > 1) {
- $_ci_file = $m . '/' . $slasharr['0'].'/' .$slasharr['1'] .
- } else {
-
- //기본 뷰 이름(접미사 이름 제외)
- $view_name = $_ci_view == '' ? $a : $_ci_view; 작업 이름은 기본적으로 사용됩니다
- $_ci_file = $m . $c . '/' . $_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;
- }
-
- if (!$cascade) {
- break;
- }
- }
- }
-
- if (!$file_exists && !file_exists($ _ci_path)) {
- show_error('요청한 파일을 로드할 수 없습니다: ' . $_ci_file);
- }
-
- // $this->load(views, files)를 사용하여 로드된 모든 것을 허용합니다. 등)
- // 컨트롤러 및 모델 함수 내에서 액세스할 수 있습니다.
-
- $_ci_CI = & get_instance();
- foreach (get_object_vars($_ci_CI) as $_ci_key => $_ci_var) {
- if (!isset($this->$_ci_key)) {
- $this->$_ci_key = & $_ci_CI->$_ci_key;
- }
- }
-
- /*
- * 변수 추출 및 캐시
- *
- * 전용 $this->load_vars()
- * 함수를 사용하거나 두 번째 매개변수를 통해 변수를 설정할 수 있습니다. 이 함수의
- * 두 가지 유형을 병합하고
- * 다른 뷰에 포함된 뷰가 이러한 변수에 액세스할 수 있도록 캐시합니다.
- */
- if (is_array( $_ci_vars)) {
- $this->_ci_cached_vars = array_merge($this->_ci_cached_vars, $_ci_vars);
- }
- extract($this->_ci_cached_vars);
-
- /*
- * 출력 버퍼링
- *
- * 두 가지 이유로 출력을 버퍼링합니다.
- * 1. 속도. 속도가 크게 향상됩니다.
- * 2. 최종 렌더링된 템플릿이 출력 클래스에 의해
- * 후처리될 수 있도록 합니다. 왜
- * 후처리가 필요한가요? 우선
- * 경과된 페이지 로드 시간을 표시하기 위해서입니다. 우리가
- * 브라우저로 전송되기 직전에 콘텐츠를 가로채고 타이머를 중지하지 않으면 정확하지 않습니다.
- */
- ob_start();
-
- // PHP 설치가 짧은 태그를 지원하지 않는 경우
- // 문자열을 약간 교체하여 짧은 태그를 표준 PHP 에코 문으로 변경
- //합니다.
-
- 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-> ;output->append_output(ob_get_contents());
- @ob_end_clean();
- }
- }
-
复代码
|