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

首頁 > 語言 > PHP > 正文

PHP SPL標準庫中的常用函數介紹

2024-09-04 11:42:39
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了PHP SPL標準庫中的常用函數介紹,本文著重講解了spl_autoload_extensions()、spl_autoload_register()、spl_autoload()三個函數,需要的朋友可以參考下

PHP SPL標準庫中提供了一些函數用來處理如自動加載、迭代器處理等。

spl_autoload_extensions()添加spl_autoload()可加載的文件擴展名

spl_autoload_register()注冊函數到SPL __autoload函數棧中。

代碼如下:

  1. /*test1.php*/ 
  2. <?php 
  3. class Test1 
  4.  
  5. /*test2.lib.php*/ 
  6. <?php 
  7. class Test2 
  8.  
  9. /*test.php*/ 
  10. <?php 
  11. //設置可加載類的文件擴展名 
  12. spl_autoload_extensions(".php,.inc.php,.class.php,.lib.php"); 
  13. //設置include_path,autoload會在這些path中去尋找類文件,可通過PATH_SEPARATOR添加多個path 
  14. set_include_path(get_include_path().PATH_SEPARATOR.'libs/'); 
  15. //不提供參數,默認實現函數是spl_autoload() 
  16. spl_autoload_register(); 

$test1 = new Test1();

$test2 = new Test2();

spl_autoload()它是__autoload()的默認實現,它會去include_path中加載文件(.php/.inc),代碼如下:

  1. /*test1.php*/ 
  2. <?php 
  3. class Test1 
  4.  
  5. /*test.php*/ 
  6. <?php 
  7. set_include_path(get_include_path().PATH_SEPARATOR.'libs/'); 
  8. spl_autoload('test1'); 
  9. $test1 = new Test1(); 

spl_autoload_call()調用所有spl_autoload_register注冊函數來加載文件,代碼如下:

  1. /*test1.php*/ 
  2. <?php 
  3. class Test 
  4.     public function getFilename() 
  5.     { 
  6.         echo 'test1.php'
  7.     } 
  8.  
  9. /*test2.lib.php*/ 
  10. <?php 
  11. class Test 
  12.     public function getFilename() 
  13.     { 
  14.         echo 'test2.lib.php'
  15.     } 
  16.  
  17. /*test.php*/ 
  18. <?php 
  19.  
  20. function loader($classname
  21.     if($classname == 'Test1') { 
  22.         require __DIR__ . '/test1.php'
  23.     } 
  24.     if($classname == 'Test2') { 
  25.         require __DIR__ . '/test2.lib.php'
  26.     } 
  27.  
  28. spl_autoload_register('loader'); 
  29. spl_autoload_call('Test2'); 
  30.  
  31.  
  32. $test = new Test(); 
  33. $test->getFilename(); //test2.lib.php 

其它SPL 函數介紹:

class_implements — 返回指定的類實現的所有接口。

class_parents — 返回指定類的父類。

class_uses — Return the traits used by the given class

iterator_apply — 為迭代器中每個元素調用一個用戶自定義函數

iterator_count — 計算迭代器中元素的個數

iterator_to_array — 將迭代器中的元素拷貝到數組

spl_autoload_functions — 返回所有已注冊的__autoload()函數

spl_autoload_unregister — 注銷已注冊的__autoload()函數

spl_classes — 返回所有可用的SPL類

spl_object_hash — 返回指定對象的hash id

如iterator相關函數使用:

  1. $iterator  = new  ArrayIterator (array'recipe' => 'pancakes' ,  'egg' ,  'milk' ,  'flour' )); 
  2.  
  3. print_r(iterator_to_array($iterator)); //將迭代器元素轉化為數組 
  4. echo iterator_count($iterator); //計算迭代器元素的個數 
  5. print_r(iterator_apply($iterator'print_item'array($iterator)));//為迭代器每個元素 

調用自定義函數

  1. function print_item(Iterator $iterator
  2.     echo  strtoupper ( $iterator -> current ()) .  "/n" ; 
  3.     return  TRUE ; 
  4. }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 精河县| 本溪| 通河县| 青田县| 新建县| 望江县| 池州市| 兴城市| 比如县| 焦作市| 镇康县| 平谷区| 泗洪县| 福州市| 商河县| 利辛县| 汉沽区| 南投市| 平武县| 洛宁县| 平阳县| 思南县| 湖北省| 新宁县| 满洲里市| 多伦县| 巧家县| 交口县| 石棉县| 德格县| 宣恩县| 榆中县| 沂源县| 卢龙县| 贵定县| 铁力市| 华宁县| 张掖市| 莱芜市| 通化市| 大新县|