Fonctions PHP imbriquées : objectif et utilisation
Dans le domaine de PHP, les fonctions imbriquées introduisent un élément d'encapsulation et d'organisation du code. Même si elles ne sont peut-être pas aussi omniprésentes que leurs homologues JavaScript, les fonctions imbriquées PHP trouvent leur place dans certains scénarios.
Considérez cet exemple :
<code class="php">function outer($msg) { function inner($msg) { echo 'inner: ' . $msg . ' '; } echo 'outer: ' . $msg . ' '; inner($msg); } inner('test1'); // Fatal error: Call to undefined function inner() outer('test2'); // outer: test2 inner: test2 inner('test3'); // inner: test3 outer('test4'); // Fatal error: Cannot redeclare inner()</code>
Comme vous pouvez le constater, lorsque vous essayez de invoquez la fonction inner() directement en dehors de la fonction external(), cela entraîne une erreur fatale car elle est limitée à la portée de la fonction external(). Ce comportement s'aligne sur le concept de portée lexicale, où une fonction imbriquée hérite de la portée de sa fonction englobante et n'est pas accessible depuis l'extérieur de cette portée.
Si vous travaillez avec PHP 5.3 ou version ultérieure, vous pouvez tirer parti fonctions anonymes pour obtenir un comportement plus proche de celui de JavaScript :
<code class="php">function outer() { $inner = function() { echo "test\n"; }; $inner(); } outer(); outer(); inner(); // PHP Fatal error: Call to undefined function inner() $inner(); // PHP Fatal error: Function name must be a string</code>
Sortie :
test test
Dans cet exemple, la fonction anonyme $inner est définie dans la fonction external() et a accès à son périmètre. Cependant, il reste limité à cette portée et ne peut pas être invoqué directement depuis la portée globale.
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!