2009-09-23 9 views
4
<?php 

$a = 'ec'; 
$b = 'ho'; 
$c = $a.$b; 
echo('Huh?'); 
$c('Hello, PHP!'); 

?> 

cèdePourquoi la concaténation de nom ne fonctionne pas en PHP?

Huh? 
Fatal error: Call to undefined function echo() in <...>/php.php on line 11 

Pourquoi?

+0

Vous ne disposez pas d'une ligne 11. Est-ce tout? Où attribuez-vous $ c à l'écho? – lod3n

+0

Désolé, j'ai expurgé un peu du code original, et je n'ai pas réexécuté. – qwzybug

Répondre

17

echo est techniquement pas une fonction en PHP. C'est une "construction de la langue".

echo('Huh?') est une syntaxe alternative pour echo 'Huh?'

Vous pouvez le faire à la place:

function my_echo($s) { 
    echo $s; 
} 

$a = "my_echo"; 
$a("Huh?"); 
+2

Juste pour ajouter une précision: echo est une "construction de langage", et ne peut pas être appelée en utilisant des fonctions variables - comme indiqué par sa page de manuel: http://php.net/echo –

+0

Vous avez ajouté la fonction wrap pendant que j'écrivais ma réponse, qui a mentionné la fonction wrap. +1 – MitMaro

+2

Je vais dire quelque chose que je n'ai pas dit depuis 2001: merci de m'avoir appris quelque chose de nouveau sur PHP. – qwzybug

3

écho est une construction de langage et non une fonction. Ce que vous essayez de faire fonctionnera avec les fonctions réelles. Quelque chose comme ça va fonctionner.

<?php 
function myecho($src) { echo $src; } 
$a = 'myec'; 
$b = 'ho'; 
$c = $a.$b; 
$c('This is a test'); 
?> 
1

echo, print, die, require, require_once, include, include_once et d'autres (je suis sûr que je manqué un peu) ne sont pas des fonctions mais des constructions de langage. L'utilisation de dire echo() avec des parenthèses est la syntaxe du sucre.

Si vous voulez les utiliser comme vous avez ci-dessus vous aurez besoin de les envelopper dans une fonction:

<?php 
function echoMyEcho($str){ 
    echo $str; 
} 

$c = "echoMyEcho"; 
$c("Let go of my eggo"); 
Questions connexes