2010-01-22 4 views
4

Je reçois cette erreur ...Dépannage Erreur T_PUBLIC inattendu

Parse error:syntax error, unexpected T_PUBLIC in C:\filename here on line 12

Sur cette ligne ....

public static function getInstance(){ 

Le code ...

<?PHP 
class Session{ 

private static $instance; 

function __construct() { 
{ 
    session_start(); 
    echo 'Session object created<BR><BR>'; 
} 

public static function getInstance(){ 
    if (!self::$instance) { 
    self::$instance = new Session(); 
    } 
    return self::$instance; 
} 
} 
+0

En cas d'erreur de syntaxe, vérifiez tous les caractères de contrôle tels que {,},; – alex

+0

J'ai eu cette erreur et c'est parce que j'ai essayé de déclarer une fonction publique _outside_ d'une classe. Quand j'ai vu les extraits de code dans cette question, cela m'a aidé à comprendre cela. La question était close, mais la réponse ultime à cette question est qu'un membre ne peut être déclaré public que s'il se trouve directement dans une classe. Dans le cas de cette question, l'accolade supplémentaire a conduit l'interprète à interpréter 'getInstance' comme étant déclaré dans la fonction '__construct', qui n'est pas une classe. Je voudrais ajouter ceci comme une réponse à d'autres dans le futur qui rencontreront ce message d'erreur de syntaxe. –

Répondre

9
<?PHP 
class Session{ 

    private static $instance; 

    function __construct() 
    { 
     session_start(); 
     echo 'Session object created<BR><BR>'; 
    } 

    public static function getInstance() 
    { 
     if (!self::$instance) { 
      self::$instance = new Session(); 
     } 
     return self::$instance; 
    } 
} 

Essayez ça. Vous avez eu un support supplémentaire.

L'erreur était réellement dans la ligne function __construct(). Il a créé une fonction et ensuite un ensemble vide de parenthèses (ne fait pas d'erreur).

Ensuite, vous n'avez jamais fini par sortir de la fonction de construction, donc elle a commis une erreur lorsque vous avez essayé d'utiliser le paramètre public dans une fonction, ce qui n'est pas une syntaxe valide.

C'est la raison pour laquelle nous effectuons un placement cohérent des supports. Nous mettons donc toujours les éléments au même endroit, ce qui permet de détecter facilement les erreurs de placement.

+0

Merci, je deviens vraiment fou pour comme une heure avec ça maintenant, c'est toujours quelque chose d'évident, il semble – JasonDavis

2

En d'autres termes, vous avez une erreur de syntaxe:

function __construct() { <-- note the extra open curly 
{ <-- note the extra open curly 
1

J'ai eu le même problème et je l'ai trouvé que les accolades « { » de ma classe était manquante.