PHP SPL 標準ライブラリでよく使用される 3 つの関数

墨辰丷
リリース: 2023-03-31 12:30:01
オリジナル
2880 人が閲覧しました

この記事では、PHP SPL 標準ライブラリでよく使用される関数を主に spl_autoload_extensions()、spl_autoload_register()、spl_autoload() の 3 つの関数に焦点を当てて紹介します。

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 — 指定されたクラスで使用される特性を返します
iterator_apply — イテレーター内の各要素に対してユーザー定義関数を呼び出します
iterator_count — イテレーター内の要素の数をカウントします
iterator_to_array —イテレータ内の要素は配列にコピーされます
spl_autoload_functions — 登録されているすべての __autoload() 関数を返します
spl_autoload_unregister — 登録されている __autoload() 関数の登録を解除します
spl_classes — 使用可能なすべての SPL クラスを返します
spl_object_hash — ハッシュを返します指定されたオブジェクトのID

イテレータ関連の関数を使用する場合:

コードは次のとおりです:

$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 は使用しますWebサイトに接続するためのcurlと情報の取得方法

MySQLデータベースの操作方法とセッションダイアログ

以上がPHP SPL 標準ライブラリでよく使用される 3 つの関数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート