From 07b7b9032725883f306b0b69a6920da5fe65d10b Mon Sep 17 00:00:00 2001 From: thinkphp Date: Fri, 20 Oct 2017 11:23:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E8=BF=9BLoader=E7=B1=BBcontroller?= =?UTF-8?q?=E5=92=8Cvalidate=E6=96=B9=E6=B3=95=20=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E5=A4=9A=E5=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/think/Loader.php | 59 ++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 33 deletions(-) diff --git a/library/think/Loader.php b/library/think/Loader.php index 54885ddc..23e546d7 100644 --- a/library/think/Loader.php +++ b/library/think/Loader.php @@ -369,17 +369,7 @@ class Loader if (isset(self::$instance[$guid])) { return self::$instance[$guid]; } - if (false !== strpos($name, '\\')) { - $class = $name; - $module = Request::instance()->module(); - } else { - if (strpos($name, '/')) { - list($module, $name) = explode('/', $name, 2); - } else { - $module = Request::instance()->module(); - } - $class = self::parseClass($module, $layer, $name, $appendSuffix); - } + list($module, $class) = $this->getModuleAndClass($name, $layer, $appendSuffix); if (class_exists($class)) { $model = new $class(); } else { @@ -405,17 +395,7 @@ class Loader */ public static function controller($name, $layer = 'controller', $appendSuffix = false, $empty = '') { - if (false !== strpos($name, '\\')) { - $class = $name; - $module = Request::instance()->module(); - } else { - if (strpos($name, '/')) { - list($module, $name) = explode('/', $name); - } else { - $module = Request::instance()->module(); - } - $class = self::parseClass($module, $layer, $name, $appendSuffix); - } + list($module, $class) = $this->getModuleAndClass($name, $layer, $appendSuffix); if (class_exists($class)) { return App::invokeClass($class); } elseif ($empty && class_exists($emptyClass = self::parseClass($module, $layer, $empty, $appendSuffix))) { @@ -444,17 +424,7 @@ class Loader if (isset(self::$instance[$guid])) { return self::$instance[$guid]; } - if (false !== strpos($name, '\\')) { - $class = $name; - $module = Request::instance()->module(); - } else { - if (strpos($name, '/')) { - list($module, $name) = explode('/', $name); - } else { - $module = Request::instance()->module(); - } - $class = self::parseClass($module, $layer, $name, $appendSuffix); - } + list($module, $class) = $this->getModuleAndClass($name, $layer, $appendSuffix); if (class_exists($class)) { $validate = new $class; } else { @@ -469,6 +439,29 @@ class Loader return $validate; } + /** + * 解析模块和类名 + * @param string $name 资源地址 + * @param string $layer 验证层名称 + * @param bool $appendSuffix 是否添加类名后缀 + * @return array + */ + protected function getModuleAndClass($name, $layer, $appendSuffix) + { + if (false !== strpos($name, '\\')) { + $module = Request::instance()->module(); + $class = $name; + } else { + if (strpos($name, '/')) { + list($module, $name) = explode('/', $name, 2); + } else { + $module = Request::instance()->module(); + } + $class = self::parseClass($module, $layer, $name, $appendSuffix); + } + return [$module, $class]; + } + /** * 数据库初始化 并取得数据库类实例 * @param mixed $config 数据库配置