您好,欢迎访问一九零五行业门户网

这是我的MVC框架ActionController的封装

这是我的mvc框架actioncontroller的封装 routing($request); $controller = $request['controller']; $controller = mst_string::camelize2($controller) . static::pf_controller; if ($request['module'] != null) { $module = $request['module']; if (strpos($module, '/') !== false) $module = str_replace('/', '_', $module); $controller = $module . '_' . $controller; } if (is_callable($beforedispatch)) { call_user_func_array($beforedispatch, array($request, & $controller)); } $globals['data_cache']['request'] = & $request; if (!class_exists($controller)) mst_core::error(202, $controller); else self::$_instance = new $controller(); } } public $layout = false, $format = 'html', $params = null, $autoloadhelper = false; protected $comet = 0, $viewpath = null, $defaultrender = self::view; abstract public function application(); private function __construct() { if ($this->comet ob_start(); $this->params = & $globals['data_cache']['request']; $this->viewpath = trim( $this->params['module'] . '/' . $this->params['controller'], '/'); if ($this->application() !== self::no_render) $this->action($this->params['action']); } public function __destruct() { if (!defined(self::is_render) && self::$_currentview != null) { switch ($this->defaultrender) { case self::view : case self::text : case self::action : case self::widget : #$this->defaultrender = $mode; break; default : $this->defaultrender = self::view; } $this->render( $this->defaultrender, self::$_currentview ); } if (self::$_instance != null) self::$_instance = null; if (self::$_request != null) self::$_request = null; } protected function action($action) { $name = mst_string::camelize($action); $actname = $name . self::pf_action; if (!method_exists($this, $actname)) mst_core::error(203, $actname); $actref = new reflectionmethod($this, $actname); if ($actref->isprivate() || $actref->isprotected() && !constant(mst_actioncontroller_router::is_map)) mst_core::error(203, $actname); if ($this->$actname() !== self::no_render && self::$_currentview == null) self::$_currentview = $action; return $this; } /** * 输出,url跳转 */ protected function redirect($url) { if (defined(self::is_render)) return self::no_render; define(self::is_render, true); header('location:'.linkuri($url)); return $this; } // render xml // render javascript protected function render( $mode = null, $content = null, array $options = null) { if (defined(self::is_render)) return self::no_render; define(self::is_render, true); if ($mode == null) $mode = $this->defaultrender; if ($mode == self::view) $content = $this->viewpath . '/' . $content; mst_actionview::instance() ->assign($this) ->setoptions($options) ->render($mode, $content); return $this; } protected function customrender($file, $path, array $options = null) { return $this->render(self::custom_view, array($file, $path), $options); } protected function setview($val) { self::$_currentview = $val; } protected function setviewoption($key, $val) { mst_actionview::instance()->setoption($key, $val); return $this; } protected function getviewoption($key) { return mst_actionview::instance()->getoption($key); } protected function setviewoptions(array $options) { mst_actionview::instance()->setoptions($options); return $this; } protected function getviewoptions() { return mst_actionview::instance()->getoptions(); } protected function docomet(closure $fn) { $times = 0; set_time_limit(0); while(true) { ob_flush(); flush(); $times++; $result = call_user_func($fn, $times, $this); if ($result === false) { break; } usleep(10000); sleep($this->comet); } }}
复制代码
其它类似信息

推荐信息