Que veut dire: ( ! ) Parse error: syntax error, unexpected $

Eléphant du PHP | 226 Messages

01 févr. 2012, 23:20

J'ai faite un erreur dans mon code, puis mon erreur de parsing est:

( ! ) Parse error: syntax error, unexpected $end in
Djun, L'inoubliable et l'incontournable

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

01 févr. 2012, 23:24

Tu dois avoir une parenthèse ou une accolade qui n'est pas correctement fermée... du coup php va jusqu'à la fin de ton code et signale une erreur puisqu'il cherche une accolade ou une parenthèse fermante et qu'il tombe sur la fin du fichier...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 226 Messages

01 févr. 2012, 23:26

Merci
Djun, L'inoubliable et l'incontournable

Mammouth du PHP | 2278 Messages

01 févr. 2012, 23:34

J'ai le sentiment de précher dans le désert, m'enfin, comme je suis bonne pâte aux heures creuses:
Parse : erreur d'analyse (parse: faire l'analyse grammaticale, par exemple)
error : erreur, faute, blague, connerie.
Syntax error : erreur de syntaxe : Php attendait quelque chose et il trouve autre chose.
Exemple:
<?PHP
if ()
{
?>
Parse error: syntax error, unexpected ')' in /var/www/htdocs/tests/test.php on line 2
')' non-attendu en ligne 2.
La cause de l'erreur est toujours avant. Ici, avant la parenthèse fermante, il faut une condition
<
?PHP
if ($a)
{
?>
résoud l'erreur précédente, car les parenthèses contiennent quelque chose

Parse error: syntax error, unexpected $end in /var/www/htdocs/tests/test.php on line 4
car if($a) {
fait attendre une accolade fermante
?PHP
if ($a)
{
}
?>
génère celle-ci:
Notice: Undefined variable: a in /var/www/htdocs/tests/test.php on line 3
car si la syntaxe est juste, on ne peut pas travailler avec une variable sans valeur.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

djun@guest
Invité n'ayant pas de compte PHPfrance

02 févr. 2012, 00:32

J'ai bien verifier je ne vois pas mon erreur.

( ! ) Parse error: syntax error, unexpected $end in C:\wamp\www\pizza.php on line 41

<?php

class Ninja
{
private $Force ;
 
public function __construct()
{ 
$this->Force = 10 ;
}
 
public function __get($object)
{
if ($object == 'Force')
{
return $this->Force;
}

return null;
}
 
public function __set($object, $valeur)
{
if ($object == 'Force') 
{
if (ctype_digit($valeur))
{
$this->Force = $valeur;
}
else
{
throw new Exception('La valeur doit être un numéro');
}
}

 
$Mario = new Ninja() ;
$Mario->Force = 20 ;

echo $Mario->__get('Force') ;
?>

ViPHP
xTG
ViPHP | 7331 Messages

02 févr. 2012, 10:25

Il manque une accolade fermante pour le premier if de ta fonction __set().
Si tu indentais ton code ce genre d'erreur tu le verrais tout de suite. ;)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

02 févr. 2012, 10:56

Il en faut peu pour être heureux ......

ViPHP
fab
ViPHP | 2657 Messages

02 févr. 2012, 13:19

Au passage tu sembles utiliser des if / else dans les templates pour celà je trouve que la syntaxe "commune" n'est pas la plus adaptée.

Code : Tout sélectionner

<?php if($condition) : ?> La condition est vérifiée <?php endif; ?>
Cette syntaxe est souvent bien plus adaptée et elle a le mérite de rendre les template plus propre.

http://php.net/manual/fr/control-struct ... syntax.php
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Mammouth du PHP | 2278 Messages

02 févr. 2012, 18:45

J'ajouterai un grain de sel:
A Pour être moins sûr de se tromper, ou plus sûr de tomber juste, il est bien de taper l'ensemble de la syntaxe en même temps.
J'entends par là que au lieu de taper
1)if (1 > 2)
2) {
3) print "j'ai inventé l'eau tiède";
4) };
il vaut mieux taper
1)if (1 > 2)
2) {
4) print "j'ai inventé l'eau tiède";
3) };
Tout le monde a compris, j'espère, que les 1)... ne font pas partie du code.
et idem pour tous les trucs, et ils sont nombreux, qui vont par paires, et en particulier si la condition du ,if était plus complexe, ou les break des switch...
B L'indentation n'est pas un caprice d'informaticien malade:
entre
function fonc ($a, $b, $z,$u)
{
if ($a>$b)
{
$z=$u;
}
else
{
switch($b)
{
case -12:
$z = rand($z);
break;
case 12
break;
}
}
}
et
function fonc ($a, $b, $z,$u)
{
    if ($a>$b)
   {
       $z=$u;
   }
   else
   {
      switch($b)
      {
         case -12:
            $z = rand($z);
             break;
        case 12
           break;
      }
   }
}
il n'y a pas photo
C Les commentaires sont les bienvenus, non pas tant pour s'assurer que toutes les paires sont complètes, et encore que ça puisse servir, surtout si,on a dû modifier des if imbriqués, que pourb rappeler à quoi servent les divers éléments, variables, fonctions... Je peux dire, par expérience, que, ayant repris récemment un mien code vieux de six mois, j'ai buté un moment sur une partie pas ou mal documentée.
/* fonction fonc qui rend un nombre aléatoire
date 02/02/2012
état : au point
paramètres : $a entier, $b ,...
devrait retourner une valeur aléatoire
*/
function fonc ($a, $b, $z,$u);
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD