## 手动加载第三方类库
如果要加载第三方类库,包括不符合命名规范和后缀的类库,以及没有使用命名空间或者命名空间和路径不一致的类库,
或者你就是想手动加载类库文件,我们都可以通过手动导入的方式加载。
我们可以使用`import`方法导入任何类库,用法如下:
~~~
import('Common.Model.UserModel');
// 导入 Application/Common/Model/UserModel.class.php
import('Admin.Model.AdminUserModel');
// 导入 Application/Admin/Model/AdminUserModel.class.php
import('Common.Library.Pay.Aliplay');
// 导入 Application/Common/Library/Pay/Aliplay.class.php
~~~
导入当前模块下类文件(假设当前模块 Home):
~~~
import('@.Model.UserModel');
//导入 Application/Home/Model/UserModel.class.php
import('@.Library.Pay.Aliplay');
//导入 Application/Home/Library/Pay/Aliplay.class.php
~~~
载入第三方库
~~~
import('Common.Org.PHPExcel', '', '.php');
//导入 Application/Common/Org/PHPExcel.php
~~~
按照系统的规则,import方法是无法导入具有点号的类库文件的,因为点号会直接转化成斜线,
例如我们定义了一个名称为`User.Info.class.php` 的文件的话,采用:`import("Org.User.Info")`
方式加载的话就会出现错误,导致加载的文件不是`Org/User.Info.class.php` 文件,而是`Org/User/Info.class.php` 文件,
这种情况下,我们可以使用:`import("Org.User#Info")` 来导入。
大多数情况下,import方法都能够自动识别导入类库文件的位置,
如果是特殊情况的导入,需要指定import方法的第二个参数作为起始导入路径。
例如,要导入当前文件所在目录下面的
~~~
RBAC/AccessDecisionManager.class.php 文件,可以使用:
import("RBAC.AccessDecisionManager",dirname(__FILE__));
~~~
如果你要导入的类库文件名的后缀不是class.php而是php,那么可以使用import方法的第三个参数指定后缀:
~~~
import("RBAC.AccessDecisionManager",dirname(__FILE__),".php");
~~~
注意:在Unix或者Linux主机下面是区别大小写的,所以在使用`import`方法的时候要注意目录名和类库名称的大小写,否则会导入失败。
如果你的第三方类库都放在`Vendor`目录下面,并且都以`.php`为类文件后缀,也没用采用命名空间的话,那么可以使用系统内置的Vendor函数简化导入。
例如,我们把 `Zend` 的 `Filter\Dir.php` 放到 `Vendor` 目录下面,这个时候 Dir 文件的路径就是 `Vendor\Zend\Filter\Dir.php`,我
们使用vendor 方法导入只需要使用:
~~~
Vendor('Zend.Filter.Dir');
~~~
就可以导入Dir类库了。
`Vendor`方法也可以支持和`import`方法一样的基础路径和文件名后缀参数,例如:
~~~
Vendor('Zend.Filter.Dir',dirname(__FILE__),'.class.php');
~~~