ThinkPHP import 類庫導入 include PHP文件

ThinkPHP 模擬了 Java 的類庫導入機制,統一採用 import 方法進行類文件的加載。import 方法是 ThinkPHP 內建的類庫和文件導入方法,提供了方便和靈活的文件導入機制,徹底能夠替代 PHP 的 require 和 include 方法。php

但對於第三方類庫,咱們建議使用 vendor 方法來導入。html

import 語法:thinkphp

boolen import(class, baseUrl, ext) 
參數說明:
參數 說明
class 必須,表示要導入的類庫,採用命名空間的方式。
baseUrl 可選,表示導入的基礎路徑,省略的話系統採用默認的規則,具體見下文。
ext 可選,表示導入的類庫後綴,默認是 .class.php 。

import 方法是 ThinkPHP 內置的一個普通函數,能夠在模塊操做內自由使用,能夠參考 PHP include 和 require 的用法。緩存

import 類庫導入例子

導入 ThinkPHP 基類庫文件

import 方法導入 ThinkPHP 基類庫文件,約定導入 Think、ORG、Com 包以 ThinkPHP 系統基類庫爲相對起始目錄:ide

// 導入 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");

這種寫法有利於項目的移植。若是是導入其餘項目的類庫,必須指定項目名稱:ui

import("OtherApp.Action.UserAction");

注意:使用這種方式導入其餘項目的類庫時,必須保證兩個項目的目錄是平級的,不然須要指定 baseUrl 參數。htm

指定 baseUrl 參數

對於以上導入系統類庫和項目類庫的狀況,import 方法會自動識別類庫導入的路徑,其餘狀況就須要指定 baseUrl 參數。如導入當前文件所在目錄下的 My.class.php 文件:get

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

指定 ext 參數

ext 參數表示導入的類庫後綴,默認是 .class.php。若是導入的文件不是 *.class.php 格式的,能夠指定 ext 參數。如導入當前文件所在目錄下的 My.php 文件:io

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 方法加以改寫。

相關文章
相關標籤/搜索