Maison >développement back-end >tutoriel php >Comment puis-je appeler des fonctions PHP dans des chaînes HEREDOC ?

Comment puis-je appeler des fonctions PHP dans des chaînes HEREDOC ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-28 17:21:11214parcourir

How Can I Call PHP Functions Within HEREDOC Strings?

Invocation de fonctions PHP dans des chaînes HEREDOC : une analyse détaillée

Les chaînes HEREDOC offrent un moyen pratique de représenter des blocs de texte multilignes en PHP. Bien qu'ils prennent en charge la substitution de variables à l'aide du préfixe « $ », l'accès à des expressions plus complexes, telles que des éléments de tableau, nécessite l'utilisation d'accolades « {} ».

Dans PHP 5, il est devenu possible d'invoquer des fonctions entre accolades. dans les chaînes HEREDOC. Cela nécessite toutefois une approche nuancée. Le nom de la fonction doit être stocké dans une variable et l'appel doit émuler une fonction nommée dynamiquement. Par exemple :

$fn = 'testfunction';
function testfunction() { return 'ok'; }
$string = <<<heredoc
plain text and now a function: {$fn()}
heredoc;

Cette approche peut paraître lourde par rapport à la syntaxe d'invocation directe de fonction :

$string = <<<heredoc
plain text and now a function: {testfunction()}
heredoc;

Des solutions alternatives existent, comme sortir du HEREDOC pour appeler la fonction ou inverser l'approche en intégrant du code PHP dans HTML, comme le montre l'exemple de code fourni dans la question. Cependant, ces méthodes ont leurs limites.

Une solution plus simple

Si une solution plus simple est souhaitée, une approche simplifiée peut être utilisée :

function fn($data) {
  return $data;
}
$fn = 'fn';

$my_string = <<<EOT
Number of seconds since the Unix Epoch: {$fn(time())}
EOT;

Cette approche offre une alternative moins alambiquée tout en conservant la fonctionnalité d'appel de fonctions dans les chaînes HEREDOC.

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