去掉Loader类的table方法 改进model方法

This commit is contained in:
thinkphp
2016-04-05 17:31:59 +08:00
parent e03fd229d9
commit dffcd7df1e

View File

@@ -259,27 +259,6 @@ class Loader
return false; return false;
} }
/**
* 实例化一个没有模型文件的Model对应数据表
* @param string $name Model名称 支持指定基础模型 例如 MongoModel:User
* @param array $options 模型参数
* @return Model
*/
public static function table($name = '', array $options = [])
{
static $_model = [];
if (strpos($name, ':')) {
list($class, $name) = explode(':', $name);
} else {
$class = 'think\\Model';
}
$guid = $name . '_' . $class;
if (!isset($_model[$guid])) {
$_model[$guid] = new $class($name, $options);
}
return $_model[$guid];
}
/** /**
* 实例化(分层)模型 * 实例化(分层)模型
* @param string $name Model名称 * @param string $name Model名称
@@ -288,9 +267,6 @@ class Loader
*/ */
public static function model($name = '', $layer = MODEL_LAYER) public static function model($name = '', $layer = MODEL_LAYER)
{ {
if (empty($name)) {
return new Model;
}
static $_model = []; static $_model = [];
if (isset($_model[$name . $layer])) { if (isset($_model[$name . $layer])) {
return $_model[$name . $layer]; return $_model[$name . $layer];
@@ -301,16 +277,14 @@ class Loader
$module = APP_MULTI_MODULE ? MODULE_NAME : ''; $module = APP_MULTI_MODULE ? MODULE_NAME : '';
} }
$class = self::parseClass($module, $layer, $name); $class = self::parseClass($module, $layer, $name);
$name = basename($name);
if (class_exists($class)) { if (class_exists($class)) {
$model = new $class($name); $model = new $class();
} else { } else {
$class = str_replace('\\' . $module . '\\', '\\' . COMMON_MODULE . '\\', $class); $class = str_replace('\\' . $module . '\\', '\\' . COMMON_MODULE . '\\', $class);
if (class_exists($class)) { if (class_exists($class)) {
$model = new $class($name); $model = new $class();
} else { } else {
Log::record('实例化不存在的类:' . $class, 'notice'); throw new Exception('class [ ' . $class . ' ] not exists', 10001);
$model = new Model($name);
} }
} }
$_model[$name . $layer] = $model; $_model[$name . $layer] = $model;