From 8ec24e41868147d3c7e3be52fad78b6ac6602da6 Mon Sep 17 00:00:00 2001 From: Chaim Date: Tue, 14 Apr 2020 11:45:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=8E=A7=E5=88=B6=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Controller.php | 149 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 src/Controller.php diff --git a/src/Controller.php b/src/Controller.php new file mode 100644 index 0000000..c496b73 --- /dev/null +++ b/src/Controller.php @@ -0,0 +1,149 @@ +app = $app; + $this->request = $app->request; + $this->app->bind('DtApp\ThinkLibrary\Controller', $this); + if (in_array($this->request->action(), get_class_methods(__CLASS__))) { + $this->error('Access without permission.'); + } + $this->initialize(); + } + + /** + * 控制器初始化 + */ + protected function initialize() + { + + } + + /** + * 返回失败的操作 + * @param mixed $info 消息内容 + * @param mixed $data 返回数据 + * @param integer $code 返回代码 + */ + public function error($info, $data = '{-null-}', $code = 0) + { + if ($data === '{-null-}') $data = new \stdClass(); + throw new HttpResponseException(json([ + 'code' => $code, 'info' => $info, 'data' => $data, + ])); + } + + /** + * 返回成功的操作 + * @param mixed $info 消息内容 + * @param mixed $data 返回数据 + * @param integer $code 返回代码 + */ + public function success($info, $data = '{-null-}', $code = 1) + { + if ($data === '{-null-}') $data = new \stdClass(); + throw new HttpResponseException(json([ + 'code' => $code, 'info' => $info, 'data' => $data, + ])); + } + + /** + * URL重定向 + * @param string $url 跳转链接 + * @param integer $code 跳转代码 + */ + public function redirect($url, $code = 301) + { + throw new HttpResponseException(redirect($url, $code)); + } + + /** + * 返回视图内容 + * @param string $tpl 模板名称 + * @param array $vars 模板变量 + */ + public function fetch($tpl = '', $vars = []) + { + foreach ($this as $name => $value) $vars[$name] = $value; + throw new HttpResponseException(view($tpl, $vars)); + } + + /** + * 模板变量赋值 + * @param mixed $name 要显示的模板变量 + * @param mixed $value 变量的值 + * @return $this + */ + public function assign($name, $value = '') + { + if (is_string($name)) { + $this->$name = $value; + } elseif (is_array($name)) { + foreach ($name as $k => $v) { + if (is_string($k)) $this->$k = $v; + } + } + return $this; + } + + /** + * 数据回调处理机制 + * @param string $name 回调方法名称 + * @param mixed $one 回调引用参数1 + * @param mixed $two 回调引用参数2 + * @return boolean + */ + public function callback($name, &$one = [], &$two = []) + { + if (is_callable($name)) return call_user_func($name, $this, $one, $two); + foreach ([$name, "_{$this->app->request->action()}{$name}"] as $method) { + if (method_exists($this, $method) && false === $this->$method($one, $two)) { + return false; + } + } + return true; + } +}