基类库

位于系统目录下面的Lib 目录,框架内置的有 Think 核心类库,还可以扩展 ORG 、 Com 扩展类库。核心基类库的作用是完成框架的通用性开发而必须的基础类和常用工具类等,包含有:Think.Core 核心类库包

 

Think.Db 数据库类库包

Think.Exception 异常处理类库包

Think.Template 内置模板引擎类库包

Think.Util 系统工具类库包

扩展类库

例如,我们要使用扩展类库的 ORG/Util/Page.class.php 的话,把 Page 类库拷贝到系统目录下面的 Lib/ORG/Util/ 目录即可。

目前可以支持的扩展类库包,包括 ORG 和 Com 。所有扩展类库必须放置于上面两个类库包之下管理。

应用类库

位于项目目录下面的 Lib 目录,,包括 Action 类库、 Model 类库或者其他的工具类库。

类库导入

import( “Think.Util.Session” );

import( “App.Model.UserModel” );

import 方法具有缓存和检测机制,相同的文件不会重复导入,如果发现导入了不同的位置下面的同名类库文件,系统会提示冲突,例如:

import( “Think.Util.Array” );

import( “ORG.Util.Array” );

上面的情况导入会产生引入两个同名的 Array.class.php 类,即使实际上的类名可能不存在冲突,但是按照 ThinkPHP 的规范,类名和文件名是一致的,所以系统会抛出类名冲突的异常,并终止执行。

注意:在 Unix 或者 Linux 主机下面是区别大小写的,所以在使用 import 方法的时候要注意目录名和类库名称的大小写,否则会引入文件失败。

对于 import 方法,系统会自动识别导入类库文件的位置, ThinkPHP 的约定是 Think 、 ORG 、 Com 包的导入以系统基类库为相对起始目录,否则就认为是项目应用类库为起始目录。

import( “Think.Util.Session” );

import( “ORG.Util.Page” );

上面两个方法分别导入了系统目录下的 Lib/Think/Util/Session.class.php 和 Lib/ORG/Util/Page.class.php 类文件。

要导入项目的应用类库文件也很简单,使用下面的方式就可以了,和导入基类库的方式看起来差不多:

import( “MyApp.Action.UserAction” );

import( “MyApp.Model.InfoModel” );

上面的方式分别表示导入 MyApp 项目下面的 Lib/Action/UserAction.class.php 和 Lib/Model/InfoModel.class.php 类文件。通常我们都是在当前项目里面导入所需的类库文件,所以,我们可以使用下面的方式来简化代码

import( “@.Action.UserAction” );

import( “@.Model.InfoModel” );

除了看起来简单一些外,还可以方便项目类库的移植。

如果要在当前项目下面导入其他项目的类库,必须保证两个项目的目录是平级的,否则无法使用

import( “OtherApp.Model.GroupModel” );

的方式来加载其他项目的类库。

我们知道,按照系统的规则, import 方法是无法导入具有点号的类库文件的,因为点号会直接转化成斜线,例如我们定义了一个名称为 User.Info.class.php 的文件的话,采用:

import( “ORG.User.Info” );

方式加载的话就会出现错误,导致加载的文件不是 ORG/User.Info.class.php 文件,而是 ORG/User/Info.class.php 文件,这种情况下,我们可以使用:

import( “ORG.User#Info” );

来导入。

对于 import 方法,系统会自动识别导入类库文件的位置,如果是其它情况的导入,需要指定 baseUrl 参数,也就是 import 方法的第二个参数。例如,要导入当前文件所在目录下面的

RBAC/AccessDecisionManager.class.php 文件,可以使用:

import( “RBAC.AccessDecisionManager” ,dirname(__FILE__));

导入第三方类库

第三方类库统一放置在系统的 Vendor 目录下面,并且使用 vendor 方法导入,其参数和 import 方法是 一致的,只是默认的值有针对变化。

例如,我们把 Zend 的 Filter\Dir.php 放到 Vendor 目录下面,这个时候 Dir 文件的路径就是

Vendor\Zend\Filter\Dir.php ,我们使用 vendor 方法导入只需要使用:

Vendor(‘Zend.Filter.Dir’);

就可以导入 Dir 类库了

别名导入

使用 import 方法进行导入

import(‘AdvModel’);

如果有定义 AdvModel 别名,则 import 方法会自动加载定义的别名导入。

系统默认的别名定义文件位于系统的 Common\alias.php ,每个模式和项目都可以定义自己的别名定义文件

自动加载

在很多情况下,我们可以利用框架的自动加载功能,完成类库的加载工作,而无需我们手动导入所需要使用的类库。这些情况包括:

²  系统和项目中已经定义的别名导入;

²  当前项目下面的 Action 类库和 Model 类库文件;

²  自动加载路径中的类库文件;