ci의 로더 기능을 변경했습니다. 누구든지 도와주실 수 있나요?

WBOY
풀어 주다: 2016-07-25 08:47:56
원래의
918명이 탐색했습니다.
  1. 보호 함수 _ci_load($_ci_data) {
  2. // 기본 데이터 변수 설정
  3. foreach (array('_ci_view', '_ci_vars', '_ci_path', ' _ci_return') $_ci_val) {
  4. $$_ci_val = (!isset($_ci_data[$_ci_val])) ? FALSE : $_ci_data[$_ci_val];
  5. }
  6. $file_exists = FALSE;
  7. $_ci_ext = '.html';
  8. // 요청한 파일의 경로를 설정합니다
  9. if ($_ci_path != '') {
  10. $_ci_x =explore(' /', $_ci_path);
  11. $_ci_file = end($_ci_x) . $_ci_ext;
  12. } else {
  13. //이미 라우팅을 통해 뷰를 자동으로 로드할 수 있으므로 다음 줄을 주석 처리할 수 있습니다.
  14. //$_ci_ext = pathinfo($_ci_view, PATHINFO_EXTENSION);//뷰 파일의 접미사 이름을 가져옵니다. 기본값은 접미사 이름을 전달하지 않는 것입니다.
  15. //뷰 경로 접합
  16. //로드 중 편의를 위한 구성 mca 값 가져오기(m: 모듈, c: 컨트롤러, a: 작업)
  17. $this->config = &load_class('Config', 'core');
  18. $directory_trigger = $this ->config->item('directory_trigger');
  19. $controller_trigger = $this->config->item('controller_trigger');
  20. $function_trigger = $this->config-> ;item( 'function_trigger');
  21. //사용자가 의사 정적을 구성하지 않은 경우 pathinfo를 사용합니다
  22. $urlinfo =explore('/', $_SERVER['REQUEST_URI']);
  23. $urlinfo ['모듈'] = @$urlinfo[1] ? $urlinfo[1] : '홈';
  24. $urlinfo['controller'] = @$urlinfo[2] ? : 'index' ;
  25. $urlinfo['action'] = @$urlinfo[3] ? $urlinfo[3] : 'index';
  26. $m = isset($_GET[ $directory_trigger]) && $_GET[$directory_trigger]!='' ? $_GET[$directory_trigger] : $urlinfo['module'];
  27. $c =isset($_GET[$controller_trigger]) && $_GET[ $controller_trigger]! ='' ? $_GET[$controller_trigger] : $urlinfo['controller'];
  28. $a = isset($_GET[$function_trigger]) && $_GET[$function_trigger] !=''? $_GET[$ function_trigger] : $urlinfo['action'];
  29. //공통/헤더 특수 처리(공통 헤더/하단 포함)
  30. $slasharr =Explode('/', $_ci_view);
  31. if (count($slasharr) > 1) {
  32. $_ci_file = $m . '/' . $slasharr['0'].'/' .$slasharr['1'] .
  33. } else {
  34. //기본 뷰 이름(접미사 이름 제외)
  35. $view_name = $_ci_view == '' ? $a : $_ci_view; 작업 이름은 기본적으로 사용됩니다
  36. $_ci_file = $m . $c . '/' . $_ci_ext;
  37. }
  38. foreach ($this->_ci_view_paths as $view_file = > $cascade) {
  39. if (file_exists($view_file . $_ci_file)) {
  40. $_ci_path = $view_file . $_ci_file;
  41. $file_exists = TRUE;
  42. break;
  43. }
  44. if (!$cascade) {
  45. break;
  46. }
  47. }
  48. }
  49. if (!$file_exists && !file_exists($ _ci_path)) {
  50. show_error('요청한 파일을 로드할 수 없습니다: ' . $_ci_file);
  51. }
  52. // $this->load(views, files)를 사용하여 로드된 모든 것을 허용합니다. 등)
  53. // 컨트롤러 및 모델 함수 내에서 액세스할 수 있습니다.
  54. $_ci_CI = & get_instance();
  55. foreach (get_object_vars($_ci_CI) as $_ci_key => $_ci_var) {
  56. if (!isset($this->$_ci_key)) {
  57. $this->$_ci_key = & $_ci_CI->$_ci_key;
  58. }
  59. }
  60. /*
  61. * 변수 추출 및 캐시
  62. *
  63. * 전용 $this->load_vars()
  64. * 함수를 사용하거나 두 번째 매개변수를 통해 변수를 설정할 수 있습니다. 이 함수의
  65. * 두 가지 유형을 병합하고
  66. * 다른 뷰에 포함된 뷰가 이러한 변수에 액세스할 수 있도록 캐시합니다.
  67. */
  68. if (is_array( $_ci_vars)) {
  69. $this->_ci_cached_vars = array_merge($this->_ci_cached_vars, $_ci_vars);
  70. }
  71. extract($this->_ci_cached_vars);
  72. /*
  73. * 출력 버퍼링
  74. *
  75. * 두 가지 이유로 출력을 버퍼링합니다.
  76. * 1. 속도. 속도가 크게 향상됩니다.
  77. * 2. 최종 렌더링된 템플릿이 출력 클래스에 의해
  78. * 후처리될 수 있도록 합니다. 왜
  79. * 후처리가 필요한가요? 우선
  80. * 경과된 페이지 로드 시간을 표시하기 위해서입니다. 우리가
  81. * 브라우저로 전송되기 직전에 콘텐츠를 가로채고 타이머를 중지하지 않으면 정확하지 않습니다.
  82. */
  83. ob_start();
  84. // PHP 설치가 짧은 태그를 지원하지 않는 경우
  85. // 문자열을 약간 교체하여 짧은 태그를 표준 PHP 에코 문으로 변경
  86. //합니다.
  87. if (( bool) @ini_get('short_open_tag') === FALSE AND config_item('rewrite_short_tags') == TRUE) {
  88. echo eval('?>' . preg_replace("/;*s*?>/" , "; ?>", str_replace(' } else {
  89. include($_ci_path); // include() 대 include_once()는 동일한 이름을 가진 여러 뷰를 허용합니다
  90. }
  91. log_message('debug', '파일 로드됨: ' . $_ci_path);
  92. / / 요청하면 파일 데이터를 반환
  93. if ($_ci_return === TRUE) {
  94. $buffer = ob_get_contents();
  95. @ob_end_clean();
  96. return $buffer;
  97. }
  98. /*
  99. * 버퍼를 플러시하거나... 플러시를 강화하시겠습니까?
  100. *
  101. * 뷰가
  102. * 다른 뷰 내에 중첩되도록 허용하려면 플러시해야 합니다. 언제든지 콘텐츠가 다시 나옵니다
  103. * 출력 버퍼링의 첫 번째 수준을 넘어섰으므로
  104. * 첫 번째로 포함된
  105. * 템플릿과 후속 템플릿에서 적절하게 보고 포함될 수 있습니다. 이런!
  106. *
  107. */
  108. if (ob_get_level() > $this->_ci_ob_level 1) {
  109. ob_end_flush();
  110. } else {
  111. $_ci_CI-> ;output->append_output(ob_get_contents());
  112. @ob_end_clean();
  113. }
  114. }
复代码

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿