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 基類庫文件,約定導入 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
對於以上導入系統類庫和項目類庫的狀況,import 方法會自動識別類庫導入的路徑,其餘狀況就須要指定 baseUrl 參數。如導入當前文件所在目錄下的 My.class.php 文件:get
import("My",dirname(__FILE__));
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 方法用於導入當前須要而 ThinkPHP 又不能自動載入的文件,如系統基類 ORG 與 Com 目錄下的擴展基類,本身的類庫等。至於第三方類庫,也可使用 import 方法導入,但建議使用 vendor 方法導入。
import 方法用於模塊操做中導入不能自動加載的文件類庫,import 標籤用於在模板中導入外部 Js 和 CSS 文件。
在將來的 PHP6 版本中開始支持命名空間和 import 關鍵字,所以能夠預見,ThinkPHP 可能會對 import 方法加以改寫。