SPL有兩個不同的函數 spl_autoload, spl_autoload_call,通過將autoload_func指向這兩個不同的函數地址來實現不同的自動加載機制。
spl_autoload 是SPL實現的默認的自動加載函數,它的功能比較簡單。它可以接收兩個參數,第一個參數是$class_name,表示類名,第二個參 數$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;"> 復制代碼代碼如下:
它會在注冊目錄下自動尋找與$classname同名的.php/.inc文件。當然,你也可以指定特定類型的文件,方法是注冊擴展名
這樣,它也會搜索.some文件。默認,php是不會啟動spl_autoload的,那么怎樣才能自動讓spl_autoload生效呢呢?方法是
spl_autoload_register有一個$callback參數,如果不指定,它就會自動注冊spl_autoload,為了能搜尋更多的自動加載目錄,可以在這些代碼前面設置自動加載目錄
這樣,當php找不到指定的類時,就會在set_include_path指定的目錄下尋找。
這些方法常用在php框架中。比如把上面的介紹串連起來:
當你要加載some/path下面的classA類時,它會在目錄下尋找classa.php或classa.inc或classa.some,這樣你就可以放心地運用new classA或extends classA
$a = new ClassA;
$b = new ClassB;
新聞熱點
疑難解答