ThinkPHP怎样自动加载类库

如下几种情况,ThinkPHP会自动加载:

系统核心文件,如系统基类下的 Think.Core 等文件定义了别名的类库

当前项目的 Action 类和 Model类自动搜索路径下面的类库

利用 ThinkPHP 的自动加载功能,可以自动加载自己常用的类库,而无需使用 import

方法手动导入。上述四种自动加载机制中,可以利用的为第二种(定义别名)和第四种(定义自动搜索路径)。

定义类库别名自动加载

系统默认的别名定义文件位于

ThinkPHP系统目录/Common/alias.php ,为便于项目移植,可以在项目的公共文件 common.php 内添加自定义别名:

alias_import(array(

'myClass'=> LIB_PATH.'/Common/myClass.class.php',

// 更多别名

)

);

这样当我们在系统中实例化一个对象时:

$p = new

myClass();

系统便会自动加载 Lib/Common/myClass.class.php ,而无需再使用 import方法手工导入。

定义类库自动搜索路径自动加载,可以通过配置 APP_AUTOLOAD_PATH参数(自动加载路径)来实现所需类库的自动加载。在系统默认配置文件 convention.php 中,APP_AUTOLOAD_PATH配置如下:

'APP_AUTOLOAD_PATH' => 'Think.Util.',

因此我们在模块操作使用Think/Util 下的工具类时,系统才会自动加载而无需额外 import 导入。如果希望再自动加载扩展类库 ORG/Util下的文件,可以增加配置自动加载的路径:'APP_AUTOLOAD_PATH'=>

'Think.Util.,ORG.Util.',

如果需要加载自定义的类库时,为便于项目移植,可以在项目配置文件Config/config.php 中定义该 APP_AUTOLOAD_PATH 参数以覆盖默认配置:

'APP_AUTOLOAD_PATH'

=> 'Think.Util.,ORG.Util.,@.Common.',

这样,当使用到了系统 Think/Util、ORG/Util以及当前项目 Lib/Common 下的类库时,系统便会自动加载而无需手动 import 导入。APP_AUTOLOAD_PATH配置多个搜索路径之间用逗号分割,并且注意定义的顺序代表了搜索的顺序。

定义别名和自动搜索路径都可以实现类库的自动加载,区别是前者需要为没一个类库文件单独定义,而后者直接定义目录搜索目录下所有类文件。

需要注意的是,自动加载的类库文件命名必须是以.class.php 为后缀的。

时间: 2024-11-29 16:26:51

ThinkPHP怎样自动加载类库的相关文章

thinkphp学习笔记9—自动加载

原文:thinkphp学习笔记9-自动加载 1.命名空间自动加载 在3.2版本中不需要手动加载类库文件,可以很方便的完成自动加载. 系统可以根据类的命名空间自动定位到类库文件,例如定义了一个类Org\Util\Auth类: namespace Org\Util; class Auth { } 保存到ThinkPHP/Library/Org/Util/Auth.class.php 这样我们就可以直接实例化了, new \Org\Util\Auth(); 实例化之后系统会自动加载 ThinkPHP/

thinkPHP线上自动加载异常与修复方法实例分析_php实例

本文实例讲述了thinkPHP线上自动加载异常与修复方法.分享给大家供大家参考,具体如下: 项目遇到一个奇怪的问题,本地代码正常,服务器上却不正常. 经过测试,应该是自动加载出了问题,尝试了各种方法, 1.手动加载,发现好麻烦,没完没了. 2.自己写自动加载,写不出来,尴尬. 3.修改配置,使其支持自动加载,发现还是不行. 后来进行调试, 发现本地支持 import('@.ORG.OSS\OssClient'); import('@.ORG.OSS\Core\OssUtil'); 而服务器上,不

CI框架中类的自动加载问题分析

本文实例讲述了CI框架中类的自动加载问题.分享给大家供大家参考,具体如下: application/config 配置文件中添加: | 1. Packages | 2. Libraries | 3. Helper files | 4. Custom config files | 5. Language files | 6. Models 1. 第三方库文件加载 // $autoload['packages'] = array(APPPATH.'third_party', '/usr/local/

thinkPHP5.0框架自动加载机制分析

本文实例讲述了thinkPHP5.0框架自动加载机制.分享给大家供大家参考,具体如下: 概述 ThinkPHP5.0 真正实现了按需加载,所有类库采用自动加载机制,并且支持类库映射和composer类库的自动加载. 自动加载的实现由think\Loader类库完成,自动加载规范符合PHP的PSR-4. 自动加载 由于新版ThinkPHP完全采用了命名空间的特性,因此只需要给类库正确定义所在的命名空间,而命名空间的路径与类库文件的目录一致,那么就可以实现类的自动加载. 类库的自动加载检测顺序如下:

php自动加载类

很多开发者写面向对象的应用程序时,对每个类的定义建立一个 PHP 源文件.一个很大的烦恼是不得不在每个脚本(每个类一个文件)开头写一个长长的包含文件的列表. 在软件开发的系统中,不可能把所有的类都写在一个PHP文件中,当在一个PHP文件中需要调用另一个文件中声明的类时,就需要通过include把这个文件引入.不过有的时候,在文件众多的项目中,要一一将所需类的文件都include进来,是一个很让人头疼的事,所以我们能不能在用到什么类的时候,再把这个类所在的php文件导入呢?这就是我们这里我们要讲的

CodeIgniter配置之autoload.php自动加载用法分析_php实例

本文实例分析了CodeIgniter配置之autoload.php自动加载用法.分享给大家供大家参考,具体如下: CodeIgniter带了自动加载的功能,可以全局加载类库.模型.配置.语言包等,对于需要全局使用的功能相当方便. 例如:有个全局函数写在app_helper.php中,需要全局加载这个函数,只需设置autoload.php: 复制代码 代码如下: $autoload['helper'] = array('app'); 接下来,所有的地方都可以使用了,配置.模型等配置相似.但方便的同

php自动加载

php加载文件方式: 1.include,include_once,requice,requice_one常规加载 2.__autoload() 3.spl_autoload_register() 常规加载方式 假设我们有一个类文件A.php,里面定义了一个名字为A的类: <?php class A { public function __construct() { echo 'Got it.'; } } 然后我们有一个index.php需要用到这个类A,常规的写法就是 <?php requi

Yaf框架自动加载和路由分发的使用方法

一.自动加载(YafLoader) 1.YafLoader相关的几个配置 PHP运行时配置 yaf.use_namespace 开启命名空间 yaf.use_spl_autoload 开启之后,可由PHP的自动加载函数加载,关闭是为了高效,Yaf只加载一次. yaf.library 全局类库目录路径 Yaf应用配置 application.library 本地类库目录路径 application.library.directory 本地类库目录路径 application.library.nam

PHP autoload与spl_autoload自动加载机制的深入理解_php实例

PHP autoload机制详解(1) autoload机制概述在使用PHP的OO模式开发系统时,通常大家习惯上将每个类的实现都存放在一个单独的文件里,这样会很容易实现对类进行复用,同时将来维护时也很便利.这 也是OO设计的基本思想之一.在PHP5之前,如果需要使用一个类,只需要直接使用include/require将其包含进来即可.下面是一个实际的例 子: 复制代码 代码如下: /* Person.class.php */<?phpclass Person {var $name, $age;f