ThinkPHP import 类库导入 include PHP文件

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

但对于第三方类库,我们建议使用 vendor 方法来导入。

import 语法:

boolen import(class, baseUrl, ext)
参数说明:
参数 说明
class 必须,表示要导入的类库,采用命名空间的方式。
baseUrl 可选,表示导入的基础路径,省略的话系统采用默认的规则,具体见下文。
ext 可选,表示导入的类库后缀,默认是 .class.php 。

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

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 类,即使实际上的类名可能不存在冲突,但是按照 ThinkPHP 命名规范,类名和文件名是一致的,所以系统会抛出类名冲突的异常,并终止执行。

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

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

import 方法与 import 标签的区别

import 方法用于模块操作中导入不能自动加载的文件类库,import 标签用于在模板中导入外部 Js 和 CSS 文件。

import 方法与 PHP6 import

在未来的 PHP6 版本中开始支持命名空间和 import 关键字,因此可以预见,ThinkPHP 可能会对 import 方法加以改写。

时间: 2024-08-08 09:26:02

ThinkPHP import 类库导入 include PHP文件的相关文章

thinkphp或者kohana 导入和读取文件

1.无论是那个框架的导入,其实都是一样的原理的,但是首先我们要导入包,可能就这点不同. kohana的导入包的方法:require_once(Kohana::find_file('vendor','PHPExcel/PHPExcel/IOFactory'));thinkphp的导入包的方法: require_once('文件路径') 2.那就是写代码了: /**默认用excel2007读取excel,若格式不对,则用之前的版本进行读取*/$PHPReader = new PHPExcel_Rea

使用neo4j图数据库的import工具导入数据 -方法和注意事项

背景 最近我在尝试存储知识图谱的过程中,接触到了Neo4j图数据库,这里我摘取了一段Neo4j的简介: Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中.它是一个嵌入式的.基于磁盘的.具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中.Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性.程序员工作在一个面向对象的.灵活的网络结构下而不是严格.静态的表中--但是他们可以享受到具备完全的事务

ThinkPHP vendor 方法导入第三方类库

第三方类库 第三方类库指除了 ThinkPHP 框架.应用项目类库之外的其他类库,一般由第三方系统或产品提供,如 Smarty.Zend 等系统的类库等. 前面使用自动加载或 import 方法导入的类库,ThinkPHP 约定是以 .class.php 为后缀的,非这类的后缀,需要通过 import 的参数来控制. 但对第三类库,由于不会有此约定,其后缀只能认为是 php .为了方便的引入其他框架和系统的类库,ThinkPHP 特意提供了导入第三方类库的功能.第三方类库统一放置在 ThinkP

.m文件导入C++头文件带来的错误

这几天的工作挖了不少的坑,遇到了各种千奇百怪的错误,现在好好总结一下. 新建一个工程,然后新建HelloCPP.h,HelloCPP.cpp文件,HelloCPP.h文件内容如下: #ifndef __CPPWrong__HelloCPP__ #define __CPPWrong__HelloCPP__ //#include <stdio.h> namespace hello { }; #endif /* defined(__CPPWrong__HelloCPP__) 就一个空的namespa

关于Eclipse 和 IDEA 导入library库文件 的步骤

这里我们以PullToRefresh(上拉刷新下拉加载)组件的library为例 下载地址: https://github.com/chrisbanes/Android-PullToRefresh 现在我们需要把library文件夹导入到Eclipse或者IDEA中去 一.IDEA 导入library库文件步骤 1.首先我们要有一个项目,没有的就创建一个吧 2.右击项目名称点击Open Module Settings(F4) 3.可以看到这样的界面 接下来在中间部分 点击绿色的加号 导入Modu

&lt;06&gt;变量使用前易犯错误总结+if语句介绍及基本格式+if-else语句及嵌套+if语句的高级用法+if语句的使用注意点+arc4random_uniform 函数导入一个头文件&lt;stdlib.h&gt;+

1)变量要初始化 -1 0  ,或者1 依据程序而定 ---------------------------------- if语句介绍及基本格式 分支语句结构 1)if 格式: if(表达式/常量/变量){ 语句块1; } 原理: 1)先计算小括号中的表达式的值 真(1) 会执行 大括号中的语句 假(0) 不会执行 大括号中的语句 2) switch 1 #include <stdio.h> 2 3 int main(int argc, const char * argv[]) { 4 5

使用import和exec运行模块文件的异同

使用import和exec运行模块文件的异同 实例代码 #script1.py import sys print(sys.platform) x = 'span' print(x*8) 在cmd中 >>> import script1 win32 spanspanspanspanspanspanspanspan >>> exec(open('script1.py').read()) win32 spanspanspanspanspanspanspanspan 看上去毫无

如何在oracle中导入dmp数据库文件

Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中. 利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用. 执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行, DOS中可以执行时由于 在oracle 8i 中 安装目录\ora81\BIN被设置为全局路径, 该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出.

PostGIS导入导出SHP文件常用命令

SHP导入POSTGIS数据库 引用 直接导入数据库 shp2pgsql  -I -s 2437 -W GBK shop_point.shp public.ntable | psql -U postgres -w -d jwsz 导出sql再导入数据库 shp2pgsql -s "2437" -W "GBK" -I D:\shop_point.shp newTable > D:\shop_point.sql psql -U postgres -f D:/sho