この記事では、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.'libs/'); //不提供参数,默认实现函数是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.'libs/'); spl_autoload('test1'); $test1 = new Test1(); spl_autoload_call()调用所有spl_autoload_register注册函数来加载文件
コードは次のとおりです:
/*test1.php*/ <?php class Test { public function getFilename() { echo 'test1.php'; } } /*test2.lib.php*/ <?php class Test { public function getFilename() { echo 'test2.lib.php'; } } /*test.php*/ <?php function loader($classname) { if($classname == 'Test1') { require __DIR__ . '/test1.php'; } if($classname == 'Test2') { require __DIR__ . '/test2.lib.php'; } } spl_autoload_register('loader'); spl_autoload_call('Test2'); $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( 'recipe' => 'pancakes' , 'egg' , 'milk' , 'flour' )); print_r(iterator_to_array($iterator)); //将迭代器元素转化为数组 echo iterator_count($iterator); //计算迭代器元素的个数 print_r(iterator_apply($iterator, 'print_item', array($iterator)));//为迭代器每个元素调用自定义函数 function print_item(Iterator $iterator) { echo strtoupper ( $iterator -> current ()) . "\n" ; return TRUE ; }
概要: 以上がこの記事です内容全体が皆さんの学習に役立つことを願っています。
関連する推奨事項:
php データベースを操作してテーブルが存在するかどうかを判断するメソッド
以上がPHP SPL 標準ライブラリでよく使用される 3 つの関数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。