Je suppose qu'il est à cause de cette (quoting la section Séparation des instructions du manuel):
The closing tag of a block of PHP code automatically implies a semicolon
Cela signifie que votre code:
<?php
class Foo
{
?>
<?php
function bar() {
print "bar";
}
}
?>
est le même comme:
<?php
class Foo
{;
function bar() {
print "bar";
}
}
?>
Ce qui explique l'erreur que vous obtenez:
Parse error: syntax error, unexpected ';', expecting T_FUNCTION
EDIT: Penser un peu plus à ce sujet, je pensais que cela était étrange, étant donné que je l'utilise souvent des trucs comme ça dans mes modèles fichiers:
<?php if (...) : ?>
blah
blah
<?php endif ; ?>
J'ai donc essayé ceci:
<?php
if (true)
{
?>
<?php
echo "Hello, World!";
}
?>
Et il fonctionne parfaitement bien. OK ...
Maintenant, nous allons essayer d'ajouter le ;
, comme ?>
est censé faire:
<?php
if (true)
{;
echo "Hello, World!";
}
?>
Cela fonctionne bien aussi, et je reçois la sortie suivante:
Hello, World!
Et, si le changement de la condition, juste pour être sûr:
<?php
if (false)
{;
echo "Hello, World!";
}
?>
Donne n o sortie, et pas d'erreur.
Compte tenu de la phrase que je citais plus tôt, ce n'est pas si surprenant ... Mais, encore, je suis surpris de toute façon ^^
ce qui est une erreur? – Andrey
Erreur d'analyse: erreur de syntaxe, inattendue ';', s'attendant à T_OLD_FUNCTION ou T_FUNCTION ou T_VAR ou '}' dans /home/beiju/beiju.info/testscripts/clas.php à la ligne 4 – Young