程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php的spl_autoload標准庫方法,phpspl_autoload

php的spl_autoload標准庫方法,phpspl_autoload

編輯:關於PHP編程

php的spl_autoload標准庫方法,phpspl_autoload


在php5中的spl_autoload方法相當於實現自己的__autoload

<?php
    function __autoload($classname){
        if(is_file($classname.'.php'){
            include $classname.'.php';
        } elseif(is_file($classname.'.inc'){
            include $classname.'.inc';
        }
    }

它會在注冊目錄下自動尋找與$classname同名的.php/.inc文件。當然,你也可以指定特定的文件,方法是注冊擴展名

<?php
    spl_autoload_extensions('.php,.inc,.some');

那麼怎樣自動加載spl_autoload呢,方法是

<?php
    spl_autoload_register();

spl_autoload_register有一個$callback參數,如果不指定,它就會自動注冊spl_autoload,為了能搜尋更多的自動加載目錄,可以在這些代碼前面設置自動加載目錄

<?php
    set_include_path(get_include_path() . PATH_SEPARATOR . 'some/path' . DIRECTORY_SEPARATOR);

這些方法常用在php框架中。


急,各位高人解釋一下PHP中的__autoload函數以及spl_autoload_register()函數,我到網上找資料都沒看懂

__autoload 常用在自動加載類庫處理
也就是網上說的 這種方法,根據類名,找出類文件,然後require_one
spl_autoload_register()

__autoload的最大缺陷是無法有多個autoload方法

好了, 想下下面的這個情景,你的項目引用了別人的一個項目,你的項目中有一個__autoload,別人的項目也有一個__autoload,這樣兩個__autoload就沖突了。解決的辦法就是修改__autoload成為一個,這無疑是非常繁瑣的。

因此我們急需使用一個autoload調用堆棧,這樣spl的autoload系列函數就出現了。你可以使用spl_autoload_register注冊多個自定義的autoload函數

如果你的PHP版本大於5.1的話,你就可以使用spl_autoload
 

教PHP中spl_autoload_register與spl_autoload_unregister 用法

這是一個PHP 類似自動加載的函數 比如 __autoload 但這個只能傳入我們NEW的類名 如果想在NEW的時候調用自己定義的函數就可以用
spl_autoload_register
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved