1. 程式人生 > >PHP 類檔案的自動載入機制 __autoload()

PHP 類檔案的自動載入機制 __autoload()

如果一個類在多個指令碼中都需要使用,可以將一個類的定義程式碼,單獨的封裝到一個檔案中,這種檔案也叫作類檔案,在需要的時候,將整個檔案載入進來即可!

PHP在執行的時候,如果發現需要一個類(只要是和這個類相關的任何的操作),但此時當前指令碼又沒有這個類的定義程式碼,也沒有手動載入這個類檔案,那麼,PHP會自動的呼叫一個名字叫作__autoload($class_name)函式,呼叫的時候,會給該函式傳遞一個引數,該引數就是當前所需要的類的類名!

此時,未引入Student.class.php這個類檔案,用__autoload()函式自動呼叫需要載入的檔案!

這樣做的最大好處就是在一個指令碼中只需要載入一個檔案就行了,但是也有一個很大的弊端,就是會有很多多餘的類

也被載入了(當前指令碼根本就用不上)!

一般的,系統預設的自動載入函式就是__autoload(),但是隨著專案規模的擴大,有可能出現多個自動載入函式,比如載入的檔案裡面又有自動載入函式!此時就出現了函式重名的問題了!

第一步:定義一個可以載入類檔案的普通函式

但是,此時系統不會自動的呼叫f1函式!

第二步:將該普通函式註冊成自動載入函式

此時,需要使用一個系統函式來完成:

spl_autoload_register(‘function_name’)

有一個引數,就是函式的名字!

結果如下

object(Student)#1 (1) {["stu_name"]=>NULL}

相關推薦

php檔案自動載入(autoload)

php實現類檔案自動載入有兩種辦法: 魔術方法:__autoload(); SPL標準庫提供的spl_autoload_register(); 一、__autoload() __autoload()是php中的一個魔術方法,在程式碼中當呼叫不存在的

PHP自動載入機制實現方法分析

這篇文章主要介紹了PHP類的自動載入機制實現方法,結合例項形式分析了__autoload方法進行類自動載入操作的相關實現技巧與使用注意事項,需要的朋友可以參考下。 本文例項講述了PHP類的自動載入機制實現方法。分享給大家供大家參考,具體如下: Test1.class.php <?php cl

PHP 檔案自動載入機制 __autoload()

如果一個類在多個指令碼中都需要使用,可以將一個類的定義程式碼,單獨的封裝到一個檔案中,這種檔案也叫作類檔案,在需要的時候,將整個檔案載入進來即可!PHP在執行的時候,如果發現需要一個類(只要是和這個類相關的任何的操作),但此時當前指令碼又沒有這個類的定義程式碼,也沒有手動載入

PHP自動載入

__autoload 嘗試載入未定義的類,PHP7.2棄用此函式。假定同一目錄下有foo.php和test.php兩個檔案。 PHP5.3以前__autoload函式丟擲的異常不能被catch語句塊捕獲並會導致一個致命錯誤。PHP5.3起能夠thrown自定義的異常,隨後

PHP自動載入以及自定義自動載入函式

類的自動載入函式是個魔術方法,這個函式不需要呼叫 是自動會載入呼叫的,PHP體統內部提供的方法,__aotuload(),使用形式為: <?php function __autoload($className){ require_once "./".$classNa

PHP自動載入與名稱空間及use的理解

今天寫一個demo,遇到一個問題,平時框架用多了,下意識的就以為use就能引入類,導致一直跑不成功,後來才意識到use與引用類並不是一回事。use只是指定了要使用哪個名稱空間下的類,但是並不會引入類,類的引用還是需要使用include或require。這裡記錄一

tp5底層原始碼分析之------tp5.1自動載入機制

tp框架作為國內主流框架,目前已經發布了6.0版本,相當於3.*版本是進行了重構,今天我們從原始碼的角度來研究下tp5.1自動載入的實現     作為單入口框架,從入口檔案看起,入口檔案在public/下,那麼為什麼大多數框架要把入口檔案放到子資料夾下面呢?  第一,為了動靜分離,因為現在

淺析PHP自動載入和名稱空間

php是使用require(require_once)和include(include_once)關鍵字載入類檔案。但是在實際的開發工程中我們基本上不會去使用這些關鍵字去載入類。 因為這樣做會使得程式碼的維護相當的困難。實際的開發中我們會在檔案的開始位置用use關鍵字使用類,然後直接new這個類就可以了. 至

PHP自動載入機制

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

關於php自動裝載機制__autoload

問題:      今天我在完善自己的MVC框架時候,由於框架採用的是類自動裝載機制,用到了__autoload函式,開始一切工作正常。 當我把smarty注入到框架後,發現框架不能運行了,致命錯誤提示找不到××類,取消smarty注入,框架恢復正常,我就肯定是Smar

php spl_autoload_register自動載入,省去引入檔案

class Autoloaders{ /** * 類庫自動載入,寫死路徑,確保不載入其他檔案。 * @param string $class 物件類名 * @ret

PHP 名稱空間與自動載入機制介紹,spl_autoload_register, __autoload 函式

include 和 require 是PHP中引入檔案的兩個基本方法。在小規模開發中直接使用 include 和 require 沒喲什麼不妥,但在大型專案中會造成大量的 include 和 require 堆積。這樣的程式碼既不優雅,執行效率也很低,而且維護起來也相當困難。 為了解決這個問題,部分框

php自動載入機制

為什麼要實現自動載入機制? 在大專案中,就不用每次include/require檔案,省心又高效,只要你不嫌累的話,就可以不使用。 一、spl_autoload_register 語法: sql_autoload_register(callback $function_n

PHP自動加載機制實現方法分析

php 當前目錄 存在 相關 func stat .class hello found 這篇文章主要介紹了PHP類的自動加載機制實現方法,結合實例形式分析了__autoload方法進行類自動加載操作的相關實現技巧與使用註意事項,需要的朋友可以參考下。 本文實例講述了PHP類

php 檔案載入 Autoloader

  做習慣了編譯語言,轉到php 使用 php的面向物件開發時候遇見一個挺彆扭的問題。在Php中引入物件 後 在呼叫過程中還需要將物件所在的php檔案 require 到當前php檔案 目前程式碼結構 index.php <?php use model\BookModel; i

php搭建mvc框架二(自動載入

首先呢這是在上一篇的基礎上繼續寫的!! 目錄: 自動載入類: 下面的就是在上一篇的程式碼基礎上,寫的自動載入類的程式碼展示。 <?php /* * 入口檔案 * 定義常量 * 載入函

php自動載入

引出自動載入 我們有一個HumanModel.php,裡面的程式碼如下: class HumanModel { public function t() { echo '人類'; } } 當我們要在別的php檔案中使

PHP自動加載

alt auto htm include class archive log lai 代碼 1.php自動加載   php自動載方法有兩種.   (1)第一種方案用__autoload,這個函數較簡單,也較弱.       但有一問題沒有解決, 就是在include前判

Ecplise中tomcat上執行HTML檔案自動載入

首先說什麼熱部署 今天在做一個SpringBoot的專案時候,發現一個很煩的問題,我修改了HTML然後ecplise上面在server上面執行,但是讓人傷心的是修改的HTML檔案都都需要重啟tomcat 真的太讓人難受了,不可能這樣一直重新啟動啊 修改了半天沒有看出來怎麼解決這樣的

PHP什麼是自動載入

what is 自動載入? 或許你已經對自動載入有所瞭解。簡單描述一下:自動載入就是我們在new一個class的時候,不需要手動去寫require來匯入這個class.php檔案,程式自動幫我們載入匯入進來。這是php5.1.2(好像是)版本新加入一個功能,他解放了程式設計師的雙手,不