tp5 Loader.php,ThinkPHP5 Loader 类介绍以及使用 | 剑花烟雨江南

Loader 类功能:实现类库或者资源的自动加载

源代码:/thinkphp/libary/think/Loader.php

我们主要来看几个用到的方法:

模型加载方法

/**

* 实例化(分层)模型

* @access public

* @param  string $name         Model名称

* @param  string $layer        业务层名称

* @param  bool   $appendSuffix 是否添加类名后缀

* @param  string $common       公共模块名

* @return object

* @throws ClassNotFoundException

*/

public static function model($name = '', $layer = 'model', $appendSuffix = false, $common = 'common')

{

$uid = $name . $layer;

if (isset(self::$instance[$uid])) {

return self::$instance[$uid];

}

list($module, $class) = self::getModuleAndClass($name, $layer, $appendSuffix);

if (class_exists($class)) {

$model = new $class();

} else {

$class = str_replace('\\' . $module . '\\', '\\' . $common . '\\', $class);

if (class_exists($class)) {

$model = new $class();

} else {

throw new ClassNotFoundException('class not exists:' . $class, $class);

}

}

return self::$instance[$uid] = $model;

}

说明:

返回的是模型对象,可以直接调用模型的方法,如:get、all等方法。

model方法中进行了缓存。

使用示例:

Loader::model("模型名称")->save();

扩展使用:

在实际项目中,我们可能会进行分层,如:逻辑层、服务层等等。在再调用时,我们往往需要使用 use 或者 new方法来实例化,这样会很麻烦。因此,我们可以利用 model 方法进行扩展。

调用服务层(Service):

public function loaderService($name)

{

return Loader::model($name, "service");

}

这样就可以使我们的代码变得更加简洁,而且实现了真正的按需加载。

你可能感兴趣的:(tp5,Loader.php)