多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 手动加载第三方类库 如果要加载第三方类库,包括不符合命名规范和后缀的类库,以及没有使用命名空间或者命名空间和路径不一致的类库, 或者你就是想手动加载类库文件,我们都可以通过手动导入的方式加载。 我们可以使用`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'); ~~~