- 1、Thinkphp中import;是什麼意思
- 2、php中import什麼意思
- 3、thinkphp import 導入文件怎麼使用
import方法是ThinkPHP框架用於類庫導入的封裝實現,尤其對於項目類庫、擴展類庫和第三方類庫的導入支持,import方法早期的版本可以和java的import方法一樣導入目錄和通配符導入,後來考慮到性能問題,在後續的版本更新中不斷改進和簡化了,所以現在的用法比較簡單明了。調用格式:
import(‘類庫名’, ‘起始路徑’, ‘類庫後綴’)
imprt方法有一個別名vendor方法,專門用於導入第三方類庫,區別在於起始路徑和類庫後綴默認值不同。
我們來分析下具體的用法:
導入系統基類庫
系統基類庫其實就是指的Think類庫包,所在目錄就是指框架的核心Lib目錄,import方法可以用於導入系統基類庫,例如:
import(‘Think.Util.Array’);
複製代碼
表示導入系統目錄下面的Lib/Util/Array.class.php 類庫文件,相當於我們這樣使用
require THINK_PATH.’Lib/Util/Array.class.php’;
複製代碼
可以支持多級目錄,例如:
import(‘Think.Util.U1.ClassA’);
複製代碼
import(‘Think.Util.U1.A2.ClassB’);
傳值:
函數參數壓棧的是參數的副本。
任何的修改是在副本上作用,沒有作用在原來的變量上。
function test($i){$i++;}
$a=1;
$b=test($a)
echo $a; //輸出還是原來的 1
傳引用:
壓棧的是引用的副本。由於引用是指向某個變量的,對引用的操作其實就是對他指向的變量的操作。
function test($i){$i++;}
$a=1;
$b=test($a)
echo $a; //在函數中已被改變,輸出變為 2
關於引用的解釋請參數PHP手冊-語言參考-引用的解釋
1,ThinkPHP import 方法
ThinkPHP 模擬了 Java 的類庫導入機制,統一採用 import 方法進行類文件的加載。import 方法是 ThinkPHP 內建的類庫和文件導入方法,提供了方便和靈活的文件導入機制,完全可以替代 PHP 的 require 和 include 方法。
但對於第三方類庫,我們建議使用 vendor 方法來導入。
2,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 方法加以改寫。
原創文章,作者:K9HL9,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/126902.html