日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

在thinkphp中,import方法用于類(lèi)庫(kù)導(dǎo)入的封裝實(shí)現(xiàn),可以對(duì)項(xiàng)目類(lèi)庫(kù)、擴(kuò)展類(lèi)庫(kù)和第三方類(lèi)庫(kù)提供導(dǎo)入支持,語(yǔ)法為“import('類(lèi)庫(kù)名', '起始路徑', '類(lèi)庫(kù)后綴')”;該方法有個(gè)別名vendor方法,專(zhuān)門(mén)用于導(dǎo)入第三方類(lèi)庫(kù)。


Thinkphp中import的用法是什么


thinkphp中import的用法是什么

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

import('類(lèi)庫(kù)名', '起始路徑', '類(lèi)庫(kù)后綴')

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

我們來(lái)分析下具體的用法:


1.導(dǎo)入系統(tǒng)基類(lèi)庫(kù)

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

import('Think.Util.Array');

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

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

可以支持多級(jí)目錄,例如:

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

通過(guò)import方法導(dǎo)入類(lèi)庫(kù)后,就可以進(jìn)行類(lèi)庫(kù)的實(shí)例化操作了。


2.導(dǎo)入擴(kuò)展類(lèi)庫(kù)

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

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

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


3.導(dǎo)入項(xiàng)目應(yīng)用類(lèi)庫(kù)

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

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

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

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

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


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

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

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

或者

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

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

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

還有一種特殊情況,是類(lèi)庫(kù)命名的特殊性。按照系統(tǒng)的規(guī)則,import方法是無(wú)法導(dǎo)入具有點(diǎn)號(hào)的類(lèi)庫(kù)文件的,因?yàn)辄c(diǎn)號(hào)會(huì)直接轉(zhuǎn)化成斜線,例如我們定義了一個(gè)名稱(chēng)為User.Info.class.php 的文件的話,采用:

import("ORG.User.Info");

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

import("ORG.User#Info");

來(lái)導(dǎo)入。


5.第三方類(lèi)庫(kù)導(dǎo)入

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

Vendor('Zend.Filter.Dir');

就可以導(dǎo)入Dir類(lèi)庫(kù)了。

Vendor方法也可以支持和import方法一樣的基礎(chǔ)路徑和文件名后綴參數(shù),例如:

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


6.別名導(dǎo)入

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

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類(lèi),別名導(dǎo)入方式禁止使用import方法的第二和第三個(gè)參數(shù),別名導(dǎo)入方式的效率比命名空間導(dǎo)入方式要高效,缺點(diǎn)是需要預(yù)先定義相關(guān)別名。

可以為某些需要的類(lèi)庫(kù)定義別名,那么無(wú)需定義自動(dòng)加載路徑也可以快速的自動(dòng)加載。

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


分享到:
標(biāo)簽:Thinkphp import的用法
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定