我是靠谱客的博主 安详金毛,最近开发中收集的这篇文章主要介绍tp5导入vendor_thinkphp5的vendor和import的区别,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

ThinkPHP 模拟了 Java 的类库导入机制,统一采用 import 方法进行类文件的加载。import 方法是 ThinkPHP 内建的类库和文件导入方法,提供了方便和灵活的文件导入机制,完全可以替代 PHP 的 require 和 include 方法。

imprt方法有一个别名vendor方法,专门用于导入第三方类库,区别在于起始路径和类库后缀默认值不同。

import 语法:

boolen import(class, baseUrl, ext)

参数说明:

参数

说明

class

必须,表示要导入的类库,采用命名空间的方式。

baseUrl

可选,表示导入的基础路径,省略的话系统采用默认的规则,具体见下文。

ext

可选,表示导入的类库后缀,默认是 .class.php 。

import 方法是 ThinkPHP 内置的一个普通函数,可以在模块操作内自由使用。

import 类库导入例子

导入 ThinkPHP 基类库文件

import 方法导入ThinkPHP 基类库文件,约定导入 Think、ORG、Com 包以 ThinkPHP 系统基类库为相对起始目录:

// 导入 ThinkPHP系统目录/Lib/Think/Util/Session.class.php 文件

import("Think.Util.Session");

// 导入 ThinkPHP系统目录/Lib/ORG/Util/Page.class.php 文件

import("ORG.Util.Page");

导入项目应用类库文件

// 导入 MyApp项目 Lib/Action/UserAction.class.php 文件

import("MyApp.Action.UserAction");

// 导入 MyApp项目 Lib/ORG/Page.class.php 文件

import("MyApp.ORG.Page");

// 导入 MyApp项目 Lib/ORG/My/Image.class.php 文件

import("MyApp.ORG.My.Image");

如果是当前项目,可以简化为:

import("@.Action.UserAction");

import("@.ORG.Page");

import("@.ORG.My.Image");

这种写法有利于项目的移植。如果是导入其他项目的类库,必须指定项目名称:

import("OtherApp.Action.UserAction");

注意:使用这种方式导入其他项目的类库时,必须保证两个项目的目录是平级的,否则需要指定 baseUrl 参数。

指定 baseUrl 参数

对于以上导入系统类库和项目类库的情况,import 方法会自动识别类库导入的路径,其他情况就需要指定 baseUrl 参数。如导入当前文件所在目录下的 My.class.php 文件:

import("My",dirname(__FILE__));

指定 ext 参数

ext 参数表示导入的类库后缀,默认是 .class.php。如果导入的文件不是 *.class.php 格式的,可以指定 ext 参数。如导入当前文件所在目录下的 My.php 文件:

import("My",dirname(__FILE__),".php");

. 符号文件导入

在 import 方法中,. 符号是用于表示目录层次的,如果需要导入的文件名包含有 . 符号,如 User.Info.class.php ,那么需要以 # 号来代替 . 号:

import("@.Action.User#Info");

别名导入

如果在别名定义文件定义了别名:

'AdvModel' => THINK_PATH.'/Lib/Think/Core/Model/AdvModel.class.php',

可以使用 import 方法以别名的方式导入对应的类库文件:

import('AdvModel');

系统默认的别名定义文件位于 ThinkPHP 系统目录下的 Commonalias.php,也可以定义项目自己的别名文件。

其他说明

同名文件导入冲突

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

import("Think.Util.Array");

import("App.Util.Array");

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

什么时候需要使用 import 方法?

import 方法用于导入当前需要而 ThinkPHP 又不能自动载入的文件,如系统基类 ORG 与 Com 目录下的扩展基类,自己的类库等。至于第三方类库,也可以使用 import 方法导入,但建议使用 vendor 方法导入。

vendor方法

与 import 方法的区别在于,vendor 方法默认的导入路径为 ThinkPHP系统目录/Vendor 目录,默认后缀为 .php。

最后

以上就是安详金毛为你收集整理的tp5导入vendor_thinkphp5的vendor和import的区别的全部内容,希望文章能够帮你解决tp5导入vendor_thinkphp5的vendor和import的区别所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部