首頁  >  文章  >  後端開發  >  怎樣使用PHP中的spl_autoload_register() 和 __autoload() 函數?

怎樣使用PHP中的spl_autoload_register() 和 __autoload() 函數?

WBOY
WBOY原創
2021-10-26 18:11:283093瀏覽

在先前的文章中為大家帶來了《PHP中怎樣去判斷物件是否屬於一個類別? 》,其中詳細介紹了在PHP中應該增陽區判斷一個物件是否屬於一個類別的相關知識,本篇文章我們來看看PHP中的自動載入機制。希望對大家有幫助!

怎樣使用PHP中的spl_autoload_register() 和 __autoload() 函數?

在日常開發使用時,我們物件導向程式設計的基本想法是,通常習慣為每個類別創建一個單獨的PHP來源文件,這樣的話為後來的維護提供便利,同時也很容易對類別進行重複使用。

在PHP中可以透過spl_autoload_register() __autoload() 函數來實現類別的自動載入功能,這樣可以節省我們的程式設計時間和精力。那接下來我們就分別來介紹一下這兩個函數吧。

<span style="font-size: 20px;"><strong><span style="font-size: 18px;">__autoload()</span></strong></span>函數

__autoload()函數準確來說它是魔術方法,我們在《五分鐘帶你了解PHP中的魔術方法(實例詳解)》中詳細的介紹了一些常用的魔術方法,其中講到,它是自動呼叫的,也就是需要早特定條件下才會呼叫函數。

當我們new 一個類別時,如果目前來源檔案中找不到這個類,PHP 則會自動呼叫__autoload() 函數,並將類別名稱傳遞給__autoload()函數。這就是__autoload()函數呼叫的特定條件。它的語法格式如下:

function __autoload($class){
    // 方法体
}

其中我們需要注意的是:

  • #$class 為要載入的類別名稱。

  • __autoload() 函數在目前原始檔中只能定義一次。

  • 想要使用 __autoload() 函數自動載入類別文件,類別檔案的名稱需要與類別名稱相同,另外一個類別檔案只能定義一個類。

接下來我們透過範例來看__autoload() 函數的使用,範例如下:

<?php
    function __autoload($class){
        $file = &#39;./&#39;.$class.&#39;.php&#39;;
        include_once($file);
    }
    $obj = new Demo();
?>

執行上面的程式碼,會自動載入同目錄下的Demo.php 文件,Demo.php 中的程式碼如下所示:

<?php
    class Demo{
    }
?>

其中我們需要注意的是:__autoload() 函數自PHP7.2.0 起已被棄用,可以使用spl_autoload_register() 函數代替。

<span style="font-size: 20px;"><strong><span style="font-size: 18px;">spl_autoload_register()</span></strong></span>


################################################## ########spl_autoload_register()函數可以指定一個函數來取代__autoload()函數的功能,######
spl_autoload_register([$autoload_function [, $throw = true [, $prepend = false ]]])
###其中需要注意的是:######### #######$autoload_function###:要取代__autoload() 函數的函數名稱,也可以是匿名函數。如果沒有提供任何參數,則自動註冊autoload 的預設實作函數spl_autoload();###############$throw###:用來設定$autoload_function 無法成功註冊時,spl_autoload_register () 函數是否拋出例外;###############$prepend###:如果是true,則spl_autoload_register() 函數會新增$autoload_function 函數到佇列之首,否則加入到佇列尾部。 ############接下來我們透過範例來看一下,範例如下:###
<?php
    spl_autoload_register(&#39;loadClass&#39;);
    function loadClass($class){
        $file = &#39;./&#39;.$class.&#39;.php&#39;;
        include_once($file);
    }
    $obj = new Demo();
?>
###上述範例中使用spl_autoload_register() 函數指定另一個函數來取代__autoload() 函數。 ######大家如果有興趣的話,可以點選《###PHP影片教學###》進行更多關於PHP知識的學習。 ###

以上是怎樣使用PHP中的spl_autoload_register() 和 __autoload() 函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn