1. 程式人生 > >SPL函式的使用和檔案處理類庫(5)

SPL函式的使用和檔案處理類庫(5)

1.什麼是Autoload
-為了初始化PHP中的類物件,需要通過一定的方法尋找到類的定義。通常情況下,類會定義在一個單獨的檔案中。
-Autoload就是php找到這些類的方法


例項:
test.php檔案
<?php
class Test{
public function __construct(){
echo "Loading Class libs/Test.php<br>";
}
}
?>
test.class.php檔案
<?php
class Test{
public function __construct(){
echo "Loading Class libs/Test.class.php<br>";
}
}
?>
spl_auto.php檔案
<?php
spl_autoload_extensions('.php,.class.php');//設定autoload尋找php定義的類檔案的副檔名,多個副檔名用逗號分隔,前面的副檔名優先被匹配
set_include_path(get_include_path().PATH_SEPARATOR."libs/");
//設定autoload尋找Php定義的類檔案的目錄,多個目錄用PATH_SEPARATOR進行分隔
spl_autoload_register();//提示PHP使用Autoload機制查詢類定義
new Test();


?>


2.__autoload裝載類
功能同上,用於載入類檔案


例項:
<?php
function __autoload($class_name){//定義__autoload函式,可以在不呼叫spl_autoload_register的函式情況下完成類的裝載
echo "__autoload class:".$class_name."<br>";
require_once($class_name.".php");//裝載類
}
function classLoader($class_name){//定義一個替換__autoload函式的類檔案裝載函式
echo "classLoader:".$class_name."<br>";
require_once($class_name.".php");//裝載類
}
spl_autoload_register('classLoader');//傳入定義裝載好的裝載類的函式的名稱替換__autoload函式
new Test();
?>


 require_once 和spl_autoload的替換
<?php
function classLoader($class_name){//定義一個替換__autoload函式的類檔案裝載函式
echo "classLoader:".$class_name."<br>";
set_include_path("spl/");
spl_autoload($class_name);//當我們不用require或者require_once載入類檔案的時候,而想通過系統查詢include_path來裝載類時,必須顯示呼叫spl_autoload函式,引數是類的名稱來重啟類檔案的自動查詢(裝載)
// require_once($class_name.".php");//裝載類
}


spl_autoload_register('classLoader');//傳入定義裝載好的裝載類的函式的名稱替換__autoload函式
new Test();
?>


理解回顧:
  1.理解和使用預設spl_autoload_register函式裝載類
  2.理解和使用__autoload裝載類
  3.通過自定義的__autoload函式裝載類


3.SPL函式的使用--其他函式
迭代器相關函式
1.iterator_apply為迭代器中每個元素呼叫一個使用者自定義函式
2.iterator_count計算迭代器中元素的個數
3.iterator_to_array將迭代器中的元素拷貝到陣列


類資訊相關函式
1.class_implements返回指定的類實現的所有介面
可以用instanceof語句判斷某個物件是否實現了某個介面或者是某個類的例項
2.class_parents返回指定類的父類
如果繼承了多次,會把所有的父類都打印出來


SPL函式使用的小結
1.Autoload的使用 ※重點
2.迭代器相關的函式
瞭解而已
3。類資訊相關函式
用的比較少


五、SPL的檔案處理類庫
·SplFileInfo用於獲得檔案的基本資訊,比如修改時間、大小、目錄等資訊
·SplFileObject用於操作檔案的內容,比如讀取、寫入