Maison > Article > développement back-end > Introduction détaillée aux fonctions anonymes et précautions de PHP
Cet article présente principalement des informations pertinentes sur les fonctions anonymes de PHP et les précautions. Les fonctions anonymes ont été introduites dans PHP5.3. PHP5.3 a non seulement introduit des fonctions anonymes, mais a également apporté de nouvelles fonctionnalités plus nombreuses et améliorées. des fonctions et précautions anonymes PHP. Les amis qui en ont besoin peuvent se référer à
Fonctions et précautions anonymes PHP
PHP5.2 Précédent : chargement automatique, PDO et MySQLi, contraintes de type.
PHP5.2 : prise en charge de JSON
PHP5.3 : fonctionnalités obsolètes, fonctions anonymes, nouvelles méthodes magiques, espaces de noms, liaison statique tardive, Heredoc et Nowdoc, const, opérateur ternaire, Phar
PHP5.4 : court Open Tag, abréviation du tableau, traits, serveur Web intégré, détails modifiés
PHP5.5 : rendement, list() pour foreach, détails modifiés
PHP5.6 : amélioration constante, paramètres de fonction variables, amélioration de l'espace de noms
De nos jours, pratiquement tout le monde utilise PHP5.3 et les versions ultérieures, mais je pense qu'un phénomène courant est que de nombreuses nouvelles fonctionnalités, après si longtemps, ne sont toujours pas complètement populaires et sont rarement utilisées dans les projets.
Regardez les fonctions anonymes PHP :
'test' => function(){ return 'test' },
La définition des fonctions anonymes PHP est très simple, il s'agit d'attribuer une valeur à une variable, mais cette valeur est une fonction.
Ce qui précède utilise le framework Yii pour configurer le fichier de composants et ajouter une configuration de test.
Que sont les fonctions anonymes PHP ?
Voir l'explication officielle :
Les fonctions anonymes, également appelées fermetures, permettent de créer temporairement une fonction sans nom précisé. La valeur la plus couramment utilisée comme argument de fonction de rappel. Bien entendu, il existe également d’autres applications.
Exemple de fonction anonyme :
<?php echo preg_replace_callback('~-([a-z])~', function ($match) { return strtoupper($match[1]); }, 'hello-world'); // 输出 helloWorld ?>
Les fonctions de fermeture peuvent également être utilisées comme valeur de variables. PHP convertira automatiquement cette expression en une instance d'objet de la classe intégrée Closure. La méthode d'affectation d'un objet de fermeture à une variable est la même que la syntaxe d'affectation de variable ordinaire, et un point-virgule est également ajouté à la fin :
Exemple d'affectation de variable de fonction anonyme :
<?php $greet = function($name) { printf("Hello %s\r\n", $name); }; $greet('World'); $greet('PHP'); ?>
Les packages de fermeture peuvent hériter des variables de la portée parent. Toutes ces variables doivent être transmises à l’aide de la construction du langage use.
Hériter des variables du scope parent
<?php $message = 'hello' // 没有 "use" $example = function () { var_dump($message); }; echo $example(); // 继承 $message $example = function () use($message) { var_dump($message); }; echo $example(); // Inherited variable's value is from when the function // is defined, not when called $message = 'world'echo $example(); // Reset message $message = 'hello' // Inherit by-reference $example = function () use(&$message) { var_dump($message); }; echo $example(); // The changed value in the parent scope // is reflected inside the function call $message = 'world'echo $example(); // Closures can also accept regular arguments $example = function ($arg) use($message) { var_dump($arg . ' ' . $message); }; $example("hello"); ?>
Notes sur les fonctions anonymes en php
Après php5.3, php a ajouté l'utilisation de fonctions anonymes, aujourd'hui dans Une erreur se produit lors de l'utilisation d'anonyme. Vous ne pouvez pas le déclarer et l'utiliser comme une fonction php. Regardez le code en détail
$callback=function(){ return "aa"; }; echo $callback();
Il s'imprime sous la forme aa;
Une erreur a été signalée à ce moment ! $callback n'est pas déclaré, mais aucune erreur ne sera signalée lors de l'utilisation de fonctions déclarées par PHP lui-même !
echo $callback(); $callback=function(){ return "aa"; };Ces deux sont imprimés aa;
function callback(){ return "aa"; } echo callback(); //aa echo callback(); //aa function callback(){ return "aa"; }
Lors de l'utilisation de fonctions anonymes, les fonctions anonymes sont utilisées comme variables et doivent être déclarées à l'avance. La même chose est vraie en js !