import方法如何在ThinkPHP中使用-創(chuàng)新互聯(lián)

今天就跟大家聊聊有關(guān)import方法如何在ThinkPHP中使用,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

創(chuàng)新互聯(lián)長期為數(shù)千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為西充企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè),西充網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

import方法是ThinkPHP框架用于類庫導(dǎo)入的封裝實現(xiàn),尤其對于項目類庫、擴展類庫和第三方類庫的導(dǎo)入支持,import方法早期的版本可以和java的import方法一樣導(dǎo)入目錄和通配符導(dǎo)入,后來考慮到性能問題,在后續(xù)的版本更新中不斷改進(jìn)和簡化了,所以現(xiàn)在的用法比較簡單明了。調(diào)用格式:

import('類庫名', '起始路徑', '類庫后綴')

imprt方法有一個別名vendor方法,專門用于導(dǎo)入第三方類庫,區(qū)別在于起始路徑和類庫后綴默認(rèn)值不同。

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

1.導(dǎo)入系統(tǒng)基類庫

系統(tǒng)基類庫其實就是指的Think類庫包,所在目錄就是指框架的核心Lib目錄,import方法可以用于導(dǎo)入系統(tǒng)基類庫,例如:

import('Think.Util.Array');

表示導(dǎo)入系統(tǒng)目錄下面的Lib/Util/Array.class.php 類庫文件,相當(dāng)于我們這樣使用

require THINK_PATH.'Lib/Util/Array.class.php';

可以支持多級目錄,例如:

import('Think.Util.U1.ClassA');
import('Think.Util.U1.A2.ClassB');

通過import方法導(dǎo)入類庫后,就可以進(jìn)行類庫的實例化操作了。

2.導(dǎo)入擴展類庫

擴展類庫位于Extend/Library目錄下面,這是系統(tǒng)的公共擴展類庫目錄,目前支持的擴展類庫包只有ORG和Com包。

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

會導(dǎo)入擴展目錄下面的第三方類庫(分別是Extend/Library/ORG/Util/Image.class.php和Extend/Library/Com/Sina/OAuth.class.php 類庫文件),第三方類庫包只能支持ORG和Com兩種,下面的子目錄可以隨意添加。

3.導(dǎo)入項目應(yīng)用類庫

如果沒有指定起始導(dǎo)入路徑的話,類庫包Think、ORG、Com之外的都會被認(rèn)為是導(dǎo)入項目應(yīng)用類庫,例如:

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

表示導(dǎo)入MyApp項目的UserAction和InfoModel類庫文件,由于通常,我們都是導(dǎo)入當(dāng)前項目下面的類庫,所以可以簡寫成:

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

@符號表示導(dǎo)入當(dāng)前項目下面的類庫,這種方式也一定程度上方便了項目類庫的代碼移植,如果項目名稱改變或者移動到其它項目下面的時候,寫法不需要改變。

4.導(dǎo)入非標(biāo)準(zhǔn)類庫文件

這里所說的非標(biāo)準(zhǔn)類庫文件,主要是指位于特殊位置或者非.class.php后綴的類庫文件。像導(dǎo)入基類庫、擴展類庫和項目類庫都是基于框架規(guī)范的目錄下面,如果我們需要導(dǎo)入項目的Common目錄下面的MyClass.php文件,則可以采用:

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

或者

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

或者要導(dǎo)入當(dāng)前目錄下面的RBAC類庫

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

還有一種特殊情況,是類庫命名的特殊性。按照系統(tǒng)的規(guī)則,import方法是無法導(dǎo)入具有點號的類庫文件的,因為點號會直接轉(zhuǎn)化成斜線,例如我們定義了一個名稱為User.Info.class.php 的文件的話,采用:

import("ORG.User.Info");

方式加載的話就會出現(xiàn)錯誤,導(dǎo)致加載的文件不是ORG/User.Info.class.php 文件,而是ORG/User/Info.class.php 文件,這種情況下,我們可以使用:

import("ORG.User#Info");

來導(dǎo)入。

5.第三方類庫導(dǎo)入

ThinkPHP 的基類庫都是以.class.php 為后綴的,這是系統(tǒng)內(nèi)置的一個約定,當(dāng)然也可以通過 import 的參數(shù)來控制, 為了更加方便引入其他框架和系統(tǒng)的類庫, 系統(tǒng)還提供了一個import方法的別名vendor,專門用于導(dǎo)入第三方類庫,并且默認(rèn)的起始目錄和類文件后綴有區(qū)別。第三方類庫位于系統(tǒng)擴展目錄下的Vendor 目錄, 例如,我們把 Zend 的 Filter\Dir.php 放到 Vendor 目錄下面,這個時候 Dir 文件的路徑就是 Vendor\Zend\Filter\Dir.php,我們使用vendor 方法導(dǎo)入只需要使用:

Vendor('Zend.Filter.Dir');

就可以導(dǎo)入Dir類庫了。
Vendor方法也可以支持和import方法一樣的基礎(chǔ)路徑和文件名后綴參數(shù),例如:

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

6.別名導(dǎo)入

除了命名空間的導(dǎo)入方式外,import方法還可以支持別名導(dǎo)入,要使用別名導(dǎo)入,首先要定義別名,我們可以在項目配置目錄下面增加alias.php 用以定義項目中需要用到的類庫別名,例如:

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

那么,現(xiàn)在就可以直接使用:

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

導(dǎo)入Rbac和Page類,別名導(dǎo)入方式禁止使用import方法的第二和第三個參數(shù),別名導(dǎo)入方式的效率比命名空間導(dǎo)入方式要高效,缺點是需要預(yù)先定義相關(guān)別名。
可以為某些需要的類庫定義別名,那么無需定義自動加載路徑也可以快速的自動加載。

一般情況下,由于框架內(nèi)部采用了自動加載方式,所以大多數(shù)情況下面不需要用戶手動導(dǎo)入類庫文件,通常用于導(dǎo)入擴展類庫和第三方類庫的情況居多。而且配合別名定義和自動加載路徑的定義,也能減少用戶手動導(dǎo)入類庫的情況。

看完上述內(nèi)容,你們對import方法如何在ThinkPHP中使用有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

名稱欄目:import方法如何在ThinkPHP中使用-創(chuàng)新互聯(lián)
標(biāo)題來源:http://muchs.cn/article4/ceoiie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、ChatGPT域名注冊電子商務(wù)、企業(yè)建站微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)