PHP實現自動載入相關函數

來源:互聯網
上載者:User
PHP在執行的時候,如果發現需要使用一個類(只要是和這個類相關的任何的操作),而此時,當前指令碼並沒有這個類的定義代碼!那麼PHP此時會自動的調用一個名字為__autoload()的一個函數!並且,在調用的時候,會給該函數傳遞一個參數,這個參數就是當前需要的類的類名。

#自動載入 函數function __aotuload($class_name){    if(!file_exists("./".$class_name.".class.php")){        include "./".$class_name.".class.php";    }else{        die("系統錯誤,沒有找到相關的類!");    }}

註冊其他的自動載入函數

一般的,系統的自動載入函數就是__autoload(),但是,隨著項目的擴充,有可能出現多個自動載入函數,比如,被載入的檔案裡面又出現了自動載入函數,這個時候就出現了函數的重名的問題!

我們一把都不使用__autoload函數,而是註冊使用者自己的自動載入函數以避免上述情況的發生!

#註冊其他的自動載入函數 解決自動載入函數重名問題function f1($class_name){    if(!file_exists("./".$class_name.".class.php")){        include "./".$class_name.".class.php";    }else{        die("系統錯誤,沒有找到相關的類!");    }}spl_autoload_register('f1');

需要注意以下的幾點:

1, 註冊一定要發生在需要某個類之前!

2, 可以註冊多個自動載入函數,在需要的類檔案載入成功之前,會依次的按註冊的順序執行,直到找到為止!

3, 一旦註冊了其他的自動載入函數,那麼系統預設的那個__autoload函數就失效了!

此時,如果想繼續使用__autoload函數,必須像註冊其他的普通函數一樣重新註冊!

註冊自動載入方法

在物件導向的編程風格中,我們一般會將使用者自訂的自動載入函數封裝到一個類中!

靜態方法的註冊

文法形式為:

spl_autoload_register(array(‘類名’,’方法名’));

另外,註冊靜態方法還有一種比較簡單的形式:

spl_autoload_register(‘類名::方法名’);

非靜態方法的註冊

此時,註冊的步驟如下:

1, 首先要執行個體化一個對象

2, 再使用spl_autoload_register()註冊,此時該函數的參數形式如下:

spl_autoload_register(array(物件變數,’方法名’));

#註冊自動載入方法class Common {    public static function autoload($class_name){        if(!file_exists("./".$class_name.".class.php")){            include "./".$class_name.".class.php";        }else{            die("系統錯誤,沒有找到相關的類!");        }    }}//spl_autoload_register("Common::autoload");spl_autoload_register(array("Common","autoload"));

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.