찾다
백엔드 개발PHP 튜토리얼이것은 내 MVC 프레임워크 ActionController의 캡슐화입니다.

내가 좋아하는 MVC의 ActionController가 무엇인가요?
  1. /*
  2. * MST_Library v3.1
  3. * @autohr Janpoem
  4. */
  5. if (!define('IN_MST_CORE'))
  6. exit('MST_ActionController는 단일을 포함할 수 없습니다!');
  7. if (!definated(MST_Core::LITE_MODE)) {
  8. MST_Core: :import(array(
  9. 'MST/ActionController/Request',
  10. 'MST/ActionController/Router',
  11. ), MST_Core::P_LIB);
  12. }
  13. 추상 클래스 MST_ActionController {
  14. const
  15. NO_RENDER = false,
  16. IS_RENDER = 'ControlLER_IS_RENDER',
  17. PF_CONTROLLER = '컨트롤러',
  18. PF_ACTION = '액션',
  19. FILE = '파일 ',
  20. VIEW = '보기',
  21. TEXT = '텍스트',
  22. ACTION = '액션',
  23. WIDGET = '위젯',
  24. CUSTOM_VIEW = 'custom_view';
  25. private static
  26. $_request = null,
  27. $_instance = null,
  28. $_currentView = null;
  29. # @todo 此处的处理应该放到controller被实例化以后, dispatch应该有一个具体含义
  30. final static public function dispatch(array $config = null, $beforeDispatch = null) {
  31. if (self::$_instance == null) {
  32. $request = new MST_ActionController_Request($config['request']);
  33. $router = new MST_ActionController_Router($config['routes']);
  34. $router->routing($request);
  35. $controller = $ request['controller'];
  36. $controller = MST_String::camelize2($controller) . static::PF_ControlLER;
  37. if ($request['module'] != null) {
  38. $module = $request['module'];
  39. if (strpos($module, '/') !== false)
  40. $module = str_replace('/', '_', $module);
  41. $controller = $module . '_' . $controller;
  42. }
  43. if (is_callable($beforeDispatch)) {
  44. call_user_func_array($beforeDispatch, array($request, & $controller));
  45. }
  46. $GLOBALS['DATA_CACHE ']['request'] = & $request;
  47. if (!class_exists($controller))
  48. MST_Core::error(202, $controller);
  49. else
  50. self::$_instance = new $controller();
  51. }
  52. }
  53. 공개
  54. $layout = false,
  55. $format = 'html',
  56. $params = null,
  57. $autoLoadHelper = false;
  58. protected
  59. $comet = 0,
  60. $viewPath = null,
  61. $defaultRender = self::VIEW;
  62. 추상 공용 함수 애플리케이션 ();
  63. 개인 함수 __construct()
  64. {
  65. if ($this->comet ob_start();
  66. $this->params = & $GLOBALS['DATA_CACHE']['request'];
  67. $this->viewPath = Trim(
  68. $this->params['module'] . '/' . $this-> ;params['controller'], '/');
  69. if ($this->application() !== self::NO_RENDER)
  70. $this->action($this->params ['action']);
  71. }
  72. 공개 함수 __destruct() {
  73. if (!definated(self::IS_RENDER) && self::$_currentView != null) {
  74. 스위치 ($this->defaultRender) {
  75. 케이스 self::VIEW :
  76. 케이스 self::TEXT :
  77. 케이스 self::ACTION :
  78. 케이스 self::WIDGET :
  79. # $this->defaultRender = $mode;
  80. break;
  81. default :
  82. $this->defaultRender = self::VIEW;
  83. }
  84. $this->render(
  85. $this->defaultRender,
  86. self::$_currentView
  87. );
  88. }
  89. if (self::$_instance != null)
  90. self::$_instance = null ;
  91. if (self::$_request != null)
  92. self::$_request = null;
  93. }
  94. 보호 함수 작업($action) {
  95. $name = MST_String::camelize($action);
  96. $actName = $name . self::PF_ACTION;
  97. if (!method_exists($this, $actName))
  98. MST_Core::error(203, $actName);
  99. $actRef = new ReflectionMethod($this, $actName);
  100. if ($actRef->isPrivate() || $actRef->isProtected()
  101. && !constant(MST_ActionController_Router::IS_MAP))
  102. MST_Core::error(203, $actName);
  103. if ($this->$actName() !== self::NO_RENDER && self::$_currentView == null)
  104. self::$_currentView = $action;
  105. return $this;
  106. }
  107. /**
  108. * 출력, URL 점프
  109. */
  110. 보호 함수 리디렉션($url) {
  111. if (defed(self::IS_RENDER)) return self::NO_RENDER;
  112. 정의(self::IS_RENDER, true);
  113. header('Location:'.linkUri($url));
  114. return $this;
  115. }
  116. // XML 렌더링
  117. // JAVASCRIPT
  118. 보호 함수 렌더링(
  119. $mode = null,
  120. $content = null,
  121. array $options = null)
  122. {
  123. if (definition(self) ::IS_RENDER)) return self::NO_RENDER;
  124. 정의(self::IS_RENDER, true);
  125. if ($mode == null) $mode = $this->defaultRender;
  126. if ( $mode == self::VIEW)
  127. $content = $this->viewPath . '/' . $content;
  128. MST_ActionView::instance()
  129. ->할당($this)
  130. ->setOptions($options)
  131. ->render($mode, $content);
  132. $this를 반환하세요.
  133. }
  134. 보호 함수 customRender($file, $path, array $options = null) {
  135. return $this->render(self::CUSTOM_VIEW, array($file, $path), $options );
  136. }
  137. 보호 함수 setView($val) {
  138. self::$_currentView = $val;
  139. }
  140. 보호 함수 setViewOption($key, $ val) {
  141. MST_ActionView::instance()->setOption($key, $val);
  142. return $this;
  143. }
  144. 보호 함수 getViewOption($key) {
  145. return MST_ActionView::instance()->getOption($key);
  146. }
  147. 보호 함수 setViewOptions(array $options) {
  148. MST_ActionView::instance()->setOptions ($options);
  149. return $this;
  150. }
  151. 보호 함수 getViewOptions() {
  152. return MST_ActionView::instance()->getOptions();
  153. }
  154. 보호 함수 doComet(Closure $fn) {
  155. $times = 0;
  156. set_time_limit(0);
  157. while(true) {
  158. ob_flush();
  159. 플러시( );
  160. $times ;
  161. $result = call_user_func($fn, $times, $this);
  162. if ($result === false) {
  163. break;
  164. }
  165. usleep(10000);
  166. sleep($this->comet);
  167. }
  168. }
  169. }
复system代码


성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
11 최고의 PHP URL 쇼트너 스크립트 (무료 및 프리미엄)11 최고의 PHP URL 쇼트너 스크립트 (무료 및 프리미엄)Mar 03, 2025 am 10:49 AM

종종 키워드와 추적 매개 변수로 혼란스러워하는 긴 URL은 방문자를 방해 할 수 있습니다. URL 단축 스크립트는 솔루션을 제공하여 소셜 미디어 및 기타 플랫폼에 이상적인 간결한 링크를 만듭니다. 이 스크립트는 개별 웹 사이트 a에 유용합니다

Laravel의 플래시 세션 데이터로 작업합니다Laravel의 플래시 세션 데이터로 작업합니다Mar 12, 2025 pm 05:08 PM

Laravel은 직관적 인 플래시 방법을 사용하여 임시 세션 데이터 처리를 단순화합니다. 응용 프로그램에 간단한 메시지, 경고 또는 알림을 표시하는 데 적합합니다. 데이터는 기본적으로 후속 요청에만 지속됩니다. $ 요청-

Laravel Back End : Part 2, React가있는 React 앱 구축Laravel Back End : Part 2, React가있는 React 앱 구축Mar 04, 2025 am 09:33 AM

이것은 Laravel 백엔드가있는 React Application을 구축하는 데있어 시리즈의 두 번째이자 마지막 부분입니다. 이 시리즈의 첫 번째 부분에서는 기본 제품 목록 응용 프로그램을 위해 Laravel을 사용하여 편안한 API를 만들었습니다. 이 튜토리얼에서는 Dev가 될 것입니다

Laravel 테스트에서 단순화 된 HTTP 응답 조롱Laravel 테스트에서 단순화 된 HTTP 응답 조롱Mar 12, 2025 pm 05:09 PM

Laravel은 간결한 HTTP 응답 시뮬레이션 구문을 제공하여 HTTP 상호 작용 테스트를 단순화합니다. 이 접근법은 테스트 시뮬레이션을보다 직관적으로 만들면서 코드 중복성을 크게 줄입니다. 기본 구현은 다양한 응답 유형 단축키를 제공합니다. Illuminate \ support \ Facades \ http를 사용하십시오. http :: 가짜 ([ 'google.com'=> ​​'Hello World', 'github.com'=> ​​[ 'foo'=> 'bar'], 'forge.laravel.com'=>

PHP의 컬 : REST API에서 PHP Curl Extension 사용 방법PHP의 컬 : REST API에서 PHP Curl Extension 사용 방법Mar 14, 2025 am 11:42 AM

PHP 클라이언트 URL (CURL) 확장자는 개발자를위한 강력한 도구이며 원격 서버 및 REST API와의 원활한 상호 작용을 가능하게합니다. PHP CURL은 존경받는 다중 프로모토콜 파일 전송 라이브러리 인 Libcurl을 활용하여 효율적인 execu를 용이하게합니다.

Codecanyon에서 12 개의 최고의 PHP 채팅 스크립트Codecanyon에서 12 개의 최고의 PHP 채팅 스크립트Mar 13, 2025 pm 12:08 PM

고객의 가장 긴급한 문제에 실시간 인스턴트 솔루션을 제공하고 싶습니까? 라이브 채팅을 통해 고객과 실시간 대화를 나누고 문제를 즉시 해결할 수 있습니다. 그것은 당신이 당신의 관습에 더 빠른 서비스를 제공 할 수 있도록합니다.

2025 PHP 상황 조사 발표2025 PHP 상황 조사 발표Mar 03, 2025 pm 04:20 PM

2025 PHP Landscape Survey는 현재 PHP 개발 동향을 조사합니다. 개발자와 비즈니스에 대한 통찰력을 제공하는 프레임 워크 사용, 배포 방법 및 과제를 탐색합니다. 이 조사는 현대 PHP Versio의 성장을 예상합니다

라 라벨에서 알림라 라벨에서 알림Mar 04, 2025 am 09:22 AM

이 기사에서는 Laravel 웹 프레임 워크에서 알림 시스템을 탐색 할 것입니다. Laravel의 알림 시스템을 사용하면 다른 채널을 통해 사용자에게 알림을 보낼 수 있습니다. 오늘은 알림을 보낼 수있는 방법에 대해 논의합니다

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)