成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

自動(dòng)加載與命名空間

songjz / 2340人閱讀

摘要:不傳參數(shù),直接調(diào)用,會(huì)默認(rèn)調(diào)用來加載類,如果后面再調(diào)用有傳參數(shù)的,也會(huì)失效的如果使用了命名空間,那么會(huì)把路徑和類名一同帶過來的。

自動(dòng)加載

兩種實(shí)現(xiàn)方式
1、__autoload();
2、spl_autoload_register(); (主要使用)

__autoload()
現(xiàn)在很少使用,因?yàn)槭褂眠@種方式,在一個(gè)系統(tǒng)的實(shí)現(xiàn)中,假如需要使用很多其它的類庫,這些類庫可能是由不同的開發(fā)工程師開發(fā),其類名與實(shí)際的磁盤文件的映射規(guī)則不盡相同。這時(shí)假如要實(shí)現(xiàn)類庫文件的自動(dòng)加載,就必須在__autoload()函數(shù)中將所有的映射規(guī)則全部實(shí)現(xiàn),因此__autoload()函數(shù)有可能會(huì)非常復(fù)雜,甚至無法實(shí)現(xiàn)。最后可能會(huì)導(dǎo)致__autoload()函數(shù)十分臃腫,這時(shí)即便能夠?qū)崿F(xiàn),也會(huì)給將來的維護(hù)和系統(tǒng)效率帶來很大的負(fù)面影響。在這種情況下,在PHP5引入SPL標(biāo)準(zhǔn)庫,一種新的解決方案,即spl_autoload_register()函數(shù)。

   function __autoload($class_name) {   
      require_once ($class_name . “class.php”);   
   }   
   $memo= new Demo();

spl_autoload_register()

此函數(shù)的功能就是把函數(shù)注冊至SPL的__autoload函數(shù)棧中,并移除系統(tǒng)默認(rèn)的__autoload()函數(shù)。

不傳參數(shù),直接調(diào)用**spl_autoload_register()**,會(huì)默認(rèn)調(diào)用spl_autoload()來加載類,如果后面再調(diào)用**spl_autoload_register()**(有傳參數(shù)的),也會(huì)失效的
*如果使用了命名空間,那么$class_name會(huì)把路徑和類名一同帶過來的。*
命名空間

主要技術(shù)點(diǎn)

    *namespace* (定義命名空間)
    *use* (使用命名空間的快捷方式)
    \__NAMESPACE\__ (獲取當(dāng)前命名空間)

命名空間分類

    1、**邏輯命名空間**----與實(shí)際物理地址沒有任何關(guān)系
    2、**物理命名空間**----按照實(shí)際目錄結(jié)構(gòu)定義的(*推薦使用*,方便尋址)

定義命名空間

    namespace wt	aobao;
    注意:必須使用**反斜杠**,而且開頭不能以反斜杠開頭

使用命名空間

    1、**非限定名稱**(調(diào)用當(dāng)前命名空間的類)
    2、**限定名稱**(調(diào)用當(dāng)前命名空間的子命名空間的類)
    3、**完全限定名稱**(調(diào)用非當(dāng)前命名空間或非當(dāng)前命名空間的子空間的類)

命名空間的價(jià)值

    解決2個(gè)問題:
    1、用戶編寫的代碼與PHP內(nèi)部的類/函數(shù)/常量或第三方類/函數(shù)/常量之間的名字沖突。
    2、為很長的標(biāo)識符名稱(通常是為了緩解第一類問題而定義的)創(chuàng)建一個(gè)別名(或簡短)的名稱,提高源代碼的可讀性。

命名空間的作用域

只有 函數(shù)、、常量 能存在作用域下(其余元素不會(huì)存在在命名空間中)

注意:
1、變量不受命名空間(邏輯路徑)作用,變量是全局的
例如:$name = "xcxcx";
2、能使用命名空間的常量,只能是const定義的常量,而define定義的常量是全局,不受命名空間作用
例如:const CON = "xcxcsdw";
3、在嵌套的情況下(例如:a.php嵌套b.php),b.php中的函數(shù)、類、常量不會(huì)繼承a.php中的命名空間,而b.php中默認(rèn)是頂級命名空間

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/22180.html

相關(guān)文章

  • PHP自動(dòng)加載功能原理解析

    摘要:前言在開始之前,歡迎關(guān)注我自己的博客這篇文章是對自動(dòng)加載功能的一個(gè)總結(jié),內(nèi)容涉及的自動(dòng)加載功能的命名空間的與標(biāo)準(zhǔn)等內(nèi)容。要實(shí)現(xiàn)第一步,第二步的功能,必須在開發(fā)時(shí)約定類名與磁盤文件的映射方法,只有這樣我們才能根據(jù)類名找到它對應(yīng)的磁盤文件。 前言 在開始之前,歡迎關(guān)注我自己的博客:www.leoyang90.cn 這篇文章是對PHP自動(dòng)加載功能的一個(gè)總結(jié),內(nèi)容涉及PHP的自動(dòng)加載功能、P...

    Imfan 評論0 收藏0
  • Composer的Autoload源碼實(shí)現(xiàn)——啟動(dòng)初始化

    摘要:任務(wù)是加載類的初始化頂級命名空間與文件路徑映射初始化和注冊。在實(shí)際情況下可能會(huì)出現(xiàn)這樣的情況。值得注意的是這個(gè)函數(shù)返回的是一個(gè)匿名函數(shù),為什么呢原因就是類中的等等都是的。。。關(guān)于匿名函數(shù)的綁定功能。 前言 在開始之前,歡迎關(guān)注我自己的博客:www.leoyang90.cn 上一篇文章,我們討論了 PHP 的自動(dòng)加載原理、PHP 的命名空間、PHP 的 PSR0 與 PSR4 標(biāo)準(zhǔn),有...

    MarvinZhang 評論0 收藏0
  • ThinkPHP5.1 源碼淺析(二)自動(dòng)加載機(jī)制

    摘要:如果遍歷后沒有找到,則加載失敗。在之后碰到了之后直接拿來用,提高系統(tǒng)自動(dòng)加載的性能。這里我們就講完了注冊自動(dòng)加載。使用自動(dòng)加載我們在中定義了我們自動(dòng)加載函數(shù)式方法。 繼 生命周期的第二篇,大家盡可放心,不會(huì)隨便鴿文章的 第一篇中,我們提到了入口腳本,也說了,里面注冊了自動(dòng)加載的功能 本文默認(rèn)你有自動(dòng)加載和命名空間的基礎(chǔ)。如果沒有請 看此篇文章 php 類的自動(dòng)加載與命名空間 自動(dòng)加載...

    mudiyouyou 評論0 收藏0
  • PSR-4:自動(dòng)加載

    摘要:概述這份聲明了關(guān)于從文件路徑自動(dòng)加載類的規(guī)范。當(dāng)根據(jù)完全限定類名加載對應(yīng)的文件時(shí)由最開始的命名空間開始,連續(xù)的一個(gè)或多個(gè)命名空間組成的序列,不包括最前面的命名空間分隔符,在這個(gè)完全限定類名中這個(gè)序列稱為命名空間前綴,對應(yīng)了至少一個(gè)基礎(chǔ)目錄。 PSR-4:自動(dòng)加載 翻譯:薛粲授權(quán)許可:CC BY-NC 4.0 這份文檔是《PSR-4: Autoloader》的非官方譯文。 英文原文使用的...

    ZweiZhao 評論0 收藏0
  • Composer的Autoload源碼實(shí)現(xiàn)——注冊運(yùn)行

    前言 在開始之前,歡迎關(guān)注我自己的博客:www.leoyang90.cn上一篇 文章我們講到了 Composer 自動(dòng)加載功能的啟動(dòng)與初始化,經(jīng)過啟動(dòng)與初始化,自動(dòng)加載核心類對象已經(jīng)獲得了頂級命名空間與相應(yīng)目錄的映射,換句話說,如果有命名空間 AppConsoleKernel,我們已經(jīng)知道了 App 對應(yīng)的目錄,接下來我們就要解決下面的就是 ConsoleKernel這一段。 注冊 我們先回顧...

    wanghui 評論0 收藏0

發(fā)表評論

0條評論

songjz

|高級講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<