首頁  >  文章  >  php框架  >  thinkphp中import的用法是什麼

thinkphp中import的用法是什麼

WBOY
WBOY原創
2022-04-18 17:03:482744瀏覽

在thinkphp中,import方法用於類別庫導入的封裝實現,可以對專案類別庫、擴展類別庫和第三方類別庫提供導入支持,語法為“import('類別庫名', '起始路徑', '類別庫後綴')」;此方法有個別名稱vendor方法,專門用於匯入第三方類別庫。

thinkphp中import的用法是什麼

本文操作環境:Windows10系統、ThinkPHP3.2版、Dell G3電腦。

thinkphp中import的用法是什麼

import方法是ThinkPHP框架用於類別庫導入的封裝實現,尤其對於項目類別庫、擴展類別庫和第三方類別庫的導入支持,import方法早期的版本可以和java的import方法一樣導入目錄和通配符導入,後來考慮到性能問題,在後續的版本更新中不斷改進和簡化了,所以現在的用法比較簡單明了。呼叫格式:

import('类库名', '起始路径', '类库后缀')

imprt方法有一個別名vendor方法,專門用來匯入第三方類別庫,差別在於起始路徑和類別庫後綴預設值不同。

我們來分析下具體的用法:

1.導入系統基底類別庫

系統基底類別庫其實就是指的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');

透過import方法導入類別庫後,就可以進行類別庫的實例化操作了。

2.導入擴充類別庫

擴充類別庫位於Extend/Library目錄下面,這是系統的公共擴充類別庫目錄,目前支援的擴充類別庫包只有ORG和Com包。

import('ORG.Util.Image');
import('Com.Sina.OAuth');

會匯入擴充目錄下面的第三方類別庫(分別是Extend/Library/ORG/Util/Image.class.php和Extend/Library/Com/Sina/OAuth.class.php 類別庫文件),第三方類別函式庫包只能支援ORG和Com兩種,下面的子目錄可以隨意加入。

3.導入專案應用程式類別庫

如果沒有指定起始導入路徑的話,類別庫包Think、ORG、Com以外的都會被視為導入專案應用類別庫,例如:

import("MyApp.Action.UserAction");
import("MyApp.Model.InfoModel");

表示導入MyApp專案的UserAction和InfoModel類別庫文件,由於通常,我們都是導入目前專案下面的類別庫,所以可以簡稱為:

import("@.Action.UserAction");
import("@.Model.InfoModel");

@符號表示導入目前專案下面的類別庫,這種方式也一定程度上方便了專案類別庫的程式碼移植,如果專案名稱改變或移動到其它專案下面的時候,寫法不需要改變。

4.導入非標準類別庫文件

這裡所說的非標準類別庫文件,主要是指位於特殊位置或非.class.php後綴的類庫文件。像是導入基底類別庫、擴充類別庫和專案類別庫都是基於框架規範的目錄下面,如果我們需要導入專案的Common目錄下面的MyClass.php文件,則可以採用:

import('Common.MyClass',APP_PATH,'.php');

import('MyClass',APP_PATH.'Common','.php');

或要匯入目前目錄下面的RBAC類別庫

import("RBAC.AccessDecisionManager",dirname(__FILE__),".php");

還有一個特殊情況,是類別庫命名的特殊性。依照系統的規則,import方法是無法匯入有點號的類別庫檔案的,因為點號會直接轉換成斜線,例如我們定義了一個名稱為User.Info.class.php 的檔案的話,採用:

import("ORG.User.Info");

方式載入的話就會出現錯誤,導致載入的檔案不是ORG/User.Info.class.php 文件,而是ORG/User/Info.class.php 文件,這種情況下,我們可以使用:

import("ORG.User#Info");

來導入。

5.第三方類別庫導入

ThinkPHP 的基底類別庫都是以.class.php 為後綴的,這是系統內建的一個約定,當然也可以透過import 的參數來控制, 為了更方便引入其他框架和系統的類別庫, 系統也提供了一個import方法的別名vendor,專門用於導入第三方類別庫,並且預設的起始目錄和類別文件後綴有差。第三方類別庫位於系統擴充目錄下的Vendor 目錄, 例如,我們把Zend 的Filter\Dir.php 放到Vendor 目錄下面,這個時候Dir 檔案的路徑就是Vendor\Zend\Filter\Dir.php,我們使用vendor方法導入只需要使用:

Vendor('Zend.Filter.Dir');

就可以導入Dir類別庫了。

Vendor方法也可以支援和import方法一樣的基礎路徑和檔案名稱後綴參數,例如:

Vendor('Zend.Filter.Dir',dirname(__FILE__),'.class.php');

6.別名導入

##除了命名空間的導入方式外,import方法還可以支援別名導入,要使用別名導入,首先要定義別名,我們可以在專案組態目錄下方增加alias.php 以定義專案中需要用到的類別庫別名,例如:

return array(
  'rbac' =>LIB_PATH.'Common/Rbac.class.php',
  'page' =>LIB_PATH.'Common/Page.class.php',
 );

那麼,現在就可以直接使用:

import("rbac");
import("page");

導入Rbac和Page類,別名導入方式禁止使用import方法的第二和第三個參數,別名導入方式的效率比命名空間導入方式要高效,缺點是需要預先定義相關別名。

可以為某些需要的類別庫定義別名,那麼無需定義自動載入路徑也可以快速的自動載入。

一般情況下,由於框架內部採用了自動載入方式,所以大多數情況下面不需要使用者手動匯入類別庫文件,通常用於匯入擴充類別庫和第三方類別庫的情況居多。而且配合別名定義和自動載入路徑的定義,也能減少使用者手動匯入類別庫的情況。

推薦學習:《PHP影片教學

以上是thinkphp中import的用法是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn