国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

php中spl_autoload詳解

2024-05-04 23:26:11
字體:
來源:轉載
供稿:網(wǎng)友
SPL 是Standard PHP Library(標準PHP庫)的縮寫。它是PHP5引入的一個擴展庫,其主要功能包括autoload機制的實現(xiàn)及包括各種Iterator接口或類。 SPL autoload機制的實現(xiàn)是通過將函數(shù)指針autoload_func指向自己實現(xiàn)的具有自動裝載功能的函數(shù)來實現(xiàn)的。
 
 

SPL有兩個不同的函數(shù) spl_autoload, spl_autoload_call,通過將autoload_func指向這兩個不同的函數(shù)地址來實現(xiàn)不同的自動加載機制。

spl_autoload 是SPL實現(xiàn)的默認的自動加載函數(shù),它的功能比較簡單。它可以接收兩個參數(shù),第一個參數(shù)是$class_name,表示類名,第二個參 數(shù)$file_extensions是可選的,表示類文件的擴展名" style="border-left-color: rgb(0, 153, 204); border-left-width: 1px; border-left-style: solid; padding: 0px 3px; margin: 3px auto 0px; width: 640px; background-color: rgb(242, 246, 251); clear: both; border-top-color: rgb(0, 153, 204); border-top-width: 1px; border-top-style: solid; border-right-color: rgb(0, 153, 204); border-right-width: 1px; border-right-style: solid;"> 復制代碼代碼如下:


<?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');

 

這樣,它也會搜索.some文件。默認,php是不會啟動spl_autoload的,那么怎樣才能自動讓spl_autoload生效呢呢?方法是

 

復制代碼代碼如下:

<?php
    spl_autoload_register();

 

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

 

復制代碼代碼如下:

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

 

這樣,當php找不到指定的類時,就會在set_include_path指定的目錄下尋找。

這些方法常用在php框架中。比如把上面的介紹串連起來:

 

復制代碼代碼如下:

<?php
set_include_path(get_include_path() . PATH_SEPARATOR . 'some/path' . DIRECTORY_SEPARATOR);
spl_autoload_extensions('.php,.inc,.some');
spl_autoload_register();

 

當你要加載some/path下面的classA類時,它會在目錄下尋找classa.php或classa.inc或classa.some,這樣你就可以放心地運用new classA或extends classA

 

復制代碼代碼如下:

<?php
    ClassB extends ClassA {
        // code..
    }

 

    $a = new ClassA;
    $b = new ClassB;


上一篇:php+mysql實現(xiàn)數(shù)據(jù)庫隨機重排實例

下一篇:php輸出xml必須header的解決方法

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網(wǎng)友關注

主站蜘蛛池模板: 蒙自县| 胶南市| 蒙城县| 安宁市| 台安县| 宜君县| 阳曲县| 英吉沙县| 吉林市| 民和| 桦甸市| 漳州市| 弥勒县| 平谷区| 临武县| 昌邑市| 高阳县| 绥德县| 益阳市| 敦煌市| 葫芦岛市| 阿克苏市| 彩票| 枣强县| 临沧市| 莆田市| 日照市| 巨野县| 库尔勒市| 任丘市| 垫江县| 鄂托克前旗| 新津县| 城固县| 英山县| 海城市| 庆云县| 奎屯市| 武胜县| 清水县| 新泰市|