国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

自動加載與命名空間

songjz / 2279人閱讀

摘要:不傳參數,直接調用,會默認調用來加載類,如果后面再調用有傳參數的,也會失效的如果使用了命名空間,那么會把路徑和類名一同帶過來的。

自動加載

兩種實現方式
1、__autoload();
2、spl_autoload_register(); (主要使用)

__autoload()
現在很少使用,因為使用這種方式,在一個系統的實現中,假如需要使用很多其它的類庫,這些類庫可能是由不同的開發工程師開發,其類名與實際的磁盤文件的映射規則不盡相同。這時假如要實現類庫文件的自動加載,就必須在__autoload()函數中將所有的映射規則全部實現,因此__autoload()函數有可能會非常復雜,甚至無法實現。最后可能會導致__autoload()函數十分臃腫,這時即便能夠實現,也會給將來的維護和系統效率帶來很大的負面影響。在這種情況下,在PHP5引入SPL標準庫,一種新的解決方案,即spl_autoload_register()函數。

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

spl_autoload_register()

此函數的功能就是把函數注冊至SPL的__autoload函數棧中,并移除系統默認的__autoload()函數。

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

主要技術點

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

命名空間分類

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

定義命名空間

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

使用命名空間

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

命名空間的價值

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

命名空間的作用域

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

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/22180.html

相關文章

  • PHP自動加載功能原理解析

    摘要:前言在開始之前,歡迎關注我自己的博客這篇文章是對自動加載功能的一個總結,內容涉及的自動加載功能的命名空間的與標準等內容。要實現第一步,第二步的功能,必須在開發時約定類名與磁盤文件的映射方法,只有這樣我們才能根據類名找到它對應的磁盤文件。 前言 在開始之前,歡迎關注我自己的博客:www.leoyang90.cn 這篇文章是對PHP自動加載功能的一個總結,內容涉及PHP的自動加載功能、P...

    Imfan 評論0 收藏0
  • Composer的Autoload源碼實現——啟動初始化

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

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

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

    mudiyouyou 評論0 收藏0
  • PSR-4:自動加載

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

    ZweiZhao 評論0 收藏0
  • Composer的Autoload源碼實現——注冊運行

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

    wanghui 評論0 收藏0

發表評論

0條評論

songjz

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<