Maison  >  Article  >  développement back-end  >  Trois fonctions couramment utilisées dans la bibliothèque standard PHP SPL

Trois fonctions couramment utilisées dans la bibliothèque standard PHP SPL

墨辰丷
墨辰丷original
2018-06-11 09:48:012875parcourir

Cet article présente principalement les fonctions courantes de la bibliothèque standard PHP SPL. Cet article se concentre sur les trois fonctions spl_autoload_extensions(), spl_autoload_register() et spl_autoload(). Les amis dans le besoin peuvent s'y référer

. La bibliothèque standard PHP SPL fournit certaines fonctions de traitement telles que le chargement automatique, le traitement des itérateurs, etc.

spl_autoload_extensions() ajoute des extensions de fichiers qui peuvent être chargées par spl_autoload()
spl_autoload_register() enregistre la fonction dans la pile de fonctions SPL __autoload.

Le code est le suivant :

/*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)

Le code est le suivant :

/*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注册函数来加载文件

Le code est le suivant :

/*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

Introduction aux autres fonctions SPL :
class_implements — Renvoie toutes les interfaces implémentées par la classe spécifiée.
class_parents — Renvoie la classe parent de la classe spécifiée.
class_uses — Renvoie les traits utilisés par la classe donnée
iterator_apply — Appele une fonction définie par l'utilisateur pour chaque élément de l'itérateur
iterator_count — Compte le nombre d'éléments dans l'itérateur
iterator_to_array — Copie le éléments de l'itérateur dans le tableau
spl_autoload_functions — Renvoie toutes les fonctions __autoload() enregistrées
spl_autoload_unregister — Annule l'enregistrement des fonctions __autoload() enregistrées
spl_classes — Renvoie toutes les classes SPL disponibles
spl_object_hash — Renvoie l'identifiant de hachage de l'objet spécifié

Par exemple, si des fonctions liées à l'itérateur sont utilisées :

Le code est le suivant :

$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 ;
}

Résumé : Le ci-dessus est ceci. Nous espérons que l’ensemble du contenu de cet article sera utile à l’étude de chacun.

Recommandations associées :

Comment PHP exploite la base de données pour déterminer si une table existe

php utilise curl se connecter au site Et comment obtenir des informations

Comment faire fonctionner la base de données MySQL et le dialogue de session avec php

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn