php的spl_autoload_register函數的一點個人見解

來源:互聯網
上載者:User

標籤:str   執行個體   class   載入   自動載入   介紹   height   ace   參考   

這是一篇對spl_autoload_register()函數的個人簡單介紹,有需要的同學可以參考,主要是討論spl_autoload_register()函數所註冊的函數的參數的個人一點迷惑。

廢話不多說,上代碼,還請同學注意看注釋。

<?php    //定義一個函數,功能自動載入類檔案    function autoload($class){        //參數$class,不用管它,它自己會以``類的名稱``作為參數        //類檔案的地址,類檔案的格式是$class.class.php        $classPath = str_replace(‘\\‘,‘/‘,__DIR__).‘/‘.$class.‘.class.php‘;        //var_dump($classPath);        if(file_exists($classPath)){            include_once $classPath;        }    }    //註冊自動載入函數,此時autoload這個函數就相當於php的自動尋找類函數__autoload()    spl_autoload_register(‘autoload‘);    $obj = new auto;//這個類已經存在同級目錄中,我的情況    $obj->autoloader();    /*spl_autoload_register假如用在類中,則傳遞的參數必須包含類名和方法名    *如下面的例子:    */    class loadClass{        public function loadFunction($class){            $classPath = str_replace(‘\\‘,‘/‘,__DIR__).‘/‘.$class.‘.class.php‘;            if(file_exists($classPath)){                include_once $classPath;            }        }        public function _register(){        //註冊自動載入方法loadFunction        spl_autoload_register(‘self::loadFunction‘);        //或者參數為數組,數組的第一個元素為類名,第二個為要註冊的方法名        spl_autoload_register(array(‘loadClass‘,‘loadFunction‘));        }    }
對於參數的個人經驗:

關於這個函數的參數,它困擾了我一個小時,你想想,spl_autoload_register()註冊的函數,它是個自動載入函數,我們是沒必要直接調用它的,它會自動載入到棧區中,不能直接調用,也就是說,我們無需調用上面的autoload(),也就根本沒辦法給它傳參數了,那麼這個參數會從哪裡來呢?這個在我剛剛認識spl_autoload_register()時,確實讓我苦惱了一會,不過,我做了一下實驗,發現這個參數確實無須傳遞,它自己會以你調用的類名傳遞過去,你執行個體化什麼類,他就傳遞什麼類名,就是這麼智能。說到這裡,感歎spl_autoload_register註冊的函數厲害不?呵呵,不信,你可以做一下實驗

 

php的spl_autoload_register函數的一點個人見解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.