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
Barbara Streisandoriginal
2024-12-21 21:01:22784parcourir

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]);"
);

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]);
};

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!

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