Maison > développement back-end > tutoriel php > Comment puis-je remplacer le « create_function() » obsolète de PHP dans PHP 7.2 et versions ultérieures ?

Comment puis-je remplacer le « create_function() » obsolète de PHP dans PHP 7.2 et versions ultérieures ?

Barbara Streisand
Libérer: 2024-12-21 21:01:22
original
781 Les gens l'ont consulté

How Can I Replace PHP's Deprecated `create_function()` in PHP 7.2 and Later?

PHP 7.2 déprécie create_function() : un examen plus approfondi

Dans PHP 7.2, la création dynamique de fonctions via create_function( ) la fonction est obsolète. Cela pose un défi aux développeurs qui se sont appuyés sur cette fonctionnalité dans leurs applications. Pour résoudre ce problème, explorons une solution qui offre une alternative moderne et compatible.

Considérez l'extrait de code suivant :

$callbacks[$delimiter] = create_function(
    '$matches',
    "return '$delimiter' . strtolower($matches[1]);"
);
Copier après la connexion

Ici, create_function() crée dynamiquement une fonction basée sur la chaîne fournie. Cependant, dans PHP 7.2 et versions ultérieures, cette approche n'est plus recommandée.

L'alternative : fonctions anonymes (fermetures)

Pour réécrire le code pour la compatibilité PHP 7.2, vous pouvez utiliser des fonctions anonymes, également appelées fermetures. Les fermetures sont des fonctions anonymes qui peuvent être définies et utilisées dans votre code. Ils vous permettent d'accéder aux variables de la portée parent, ce qui les rend idéales pour la tâche à accomplir.

Le code suivant montre comment réécrire l'extrait d'origine à l'aide d'une fermeture :

$callbacks[$delimiter] = function($matches) use ($delimiter) {
    return $delimiter . strtolower($matches[1]);
};
Copier après la connexion

Dans this Closure:

  • function ($matches): Définit les paramètres de la fonction, qui sont reçus sous forme de tableau représentant les correspondances d'une expression régulière.
  • use ($delimiter):** Déclare que la variable **$delimiter de la portée parent sera disponible dans la fermeture.
  • return $delimiter . strtolower($matches[1]): Renvoie le résultat souhaité, qui est la concaténation de $delimiter et la version minuscule du premier élément correspondant.

Par en utilisant des fonctions anonymes, vous pouvez facilement migrer votre code vers PHP 7.2 et au-delà, en conservant les fonctionnalités fournies par create_function() tout en adhérant aux derniers standards 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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal