首頁 >後端開發 >php教程 >PHP SPL標準函式庫中常用的三大函數

PHP SPL標準函式庫中常用的三大函數

墨辰丷
墨辰丷原創
2018-06-11 09:48:012899瀏覽

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

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

spl_autoload_extensions()新增spl_autoload()可載入的檔案副檔名
spl_autoload_register()註冊函數到SPL __autoload函數堆疊中。

程式碼如下:

/*test1.php*/
<?php
class Test1
{
}
 
/*test2.lib.php*/
<?php
class Test2
{
}
 
/*test.php*/
<?php
//设置可加载类的文件扩展名
spl_autoload_extensions(".php,.inc.php,.class.php,.lib.php");
//设置include_path,autoload会在这些path中去寻找类文件,可通过PATH_SEPARATOR添加多个path
set_include_path(get_include_path().PATH_SEPARATOR.&#39;libs/&#39;);
//不提供参数,默认实现函数是spl_autoload()
spl_autoload_register();
 
$test1 = new Test1();
$test2 = new Test2();
spl_autoload()它是__autoload()的默认实现,它会去include_path中加载文件(.php/.inc)

程式碼如下:

/*test1.php*/
<?php
class Test1
{
}
 
/*test.php*/
<?php
set_include_path(get_include_path().PATH_SEPARATOR.&#39;libs/&#39;);
spl_autoload(&#39;test1&#39;);
$test1 = new Test1();
spl_autoload_call()调用所有spl_autoload_register注册函数来加载文件

程式碼如下:

/*test1.php*/
<?php
class Test
{
    public function getFilename()
    {
        echo &#39;test1.php&#39;;
    }
}
 
/*test2.lib.php*/
<?php
class Test
{
    public function getFilename()
    {
        echo &#39;test2.lib.php&#39;;
    }
}
 
/*test.php*/
<?php
 
function loader($classname)
{
    if($classname == &#39;Test1&#39;) {
        require __DIR__ . &#39;/test1.php&#39;;
    }
    if($classname == &#39;Test2&#39;) {
        require __DIR__ . &#39;/test2.lib.php&#39;;
    }
}
 
spl_autoload_register(&#39;loader&#39;);
spl_autoload_call(&#39;Test2&#39;);
 
 
$test = new Test();
$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相關函數使用:

程式碼如下:

$iterator  = new  ArrayIterator (array( &#39;recipe&#39; => &#39;pancakes&#39; ,  &#39;egg&#39; ,  &#39;milk&#39; ,  &#39;flour&#39; ));
 
print_r(iterator_to_array($iterator)); //将迭代器元素转化为数组
echo iterator_count($iterator); //计算迭代器元素的个数
print_r(iterator_apply($iterator, &#39;print_item&#39;, array($iterator)));//为迭代器每个元素调用自定义函数
 
 
function print_item(Iterator $iterator)
{
    echo  strtoupper ( $iterator -> current ()) .  "\n" ;
    return  TRUE ;
}

總結:以上就是本篇文的全部內容,希望對大家的學習有所幫助。

相關推薦:

php操作資料庫判斷表格是否存在的方法

php使用curl連接網站及取得資訊的方法

php操作MySQL資料庫及session對話的方法

以上是PHP SPL標準函式庫中常用的三大函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn