Inattendu T_PAAMAYIM_NEKUDOTAYIM en PHP 5.2.x
Je vais avoir du mal à comprendre pourquoi je me fais un Unexpected T_PAAMAYIM_NEKUDOTAYIM
erreur dans le code suivant, qui semble perfecly valable pour moi...
class xpto
{
public static $id = null;
public function __construct()
{
}
public static function getMyID()
{
return self::$id;
}
}
function instance($xpto = null)
{
static $result = null;
if (is_null($result) === true)
{
$result = new xpto();
}
if (is_object($result) === true)
{
$result::$id = strval($xpto);
}
return $result;
}
De sortie en PHP 5.3+:
echo var_dump(instance()->getMyID()) . "\n"; //null
echo var_dump(instance('dev')->getMyID()) . "\n"; //dev
echo var_dump(instance('prod')->getMyID()) . "\n"; //prod
echo var_dump(instance()->getMyID()) . "\n"; //null
Dans les versions antérieures cependant, je ne peux pas faire $result::$id = strval($xpto);
, personne ne sait pourquoi?
Existe-il des solutions de contournement pour ce problème?
J'ai copier/coller votre code dans un fichier php, et il s'exécute sans erreur.
Quelle version de PHP que vous utilisez? Aussi, suivez ce lien: codepad.org/wpT0g3VH.
Désolé, mal interprété votre question. Posté réponse ci-dessous.
Double Possible de PHP attend T_PAAMAYIM_NEKUDOTAYIM?
Quelle version de PHP que vous utilisez? Aussi, suivez ce lien: codepad.org/wpT0g3VH.
Désolé, mal interprété votre question. Posté réponse ci-dessous.
Double Possible de PHP attend T_PAAMAYIM_NEKUDOTAYIM?
OriginalL'auteur Alix Axel | 2011-02-14
Vous devez vous connecter pour publier un commentaire.
Après avoir regardé codepad:
... devrait être
J'ai corrigé dans une nouvelle pâte, et l'erreur est toujours présente... juste pour vous informer du problème dans le code de démonstration.
MODIFIER
Par PHP page de documentation sur
static
mot-clé,Malheureusement, aucun détail n'est donné quant à POURQUOI est autrement dans les versions antérieures, je ne vois qu'une solution de contournement présentée dans les commentaires.
Parce que la classe est statique, cependant, vous devriez être en mesure de modifier directement l'établissement:
Oups, c'était une faute de frappe! Encore obtenir l'erreur, même si (codepad.org/wpT0g3VH).
Il est intéressant de noter, mon serveur de dev (php 5.2.7) appelle l'origine de l'erreur "Parse error: Parse error" plutôt que de trot à l'ancienne "T_PAAMAYIM_NEKUDOTAYIM de la châtaigne.
En fait, vous m'avez donné un très bon conseil: codepad.org/Y9ntbREa. Merci!!!! =)
OriginalL'auteur Chris Baker
La raison de l'erreur est tout simplement que la syntaxe n'est pas pris en charge dans
<
5.3.Toutefois, si vous essayez d'accéder à l'statique de la variable $id, la syntaxe serait:
$result::id
Si vous avez besoin d'accéder à une variable statique de la variable, puis une solution de contournement consiste à utiliser la réflexion:
ReflectionClass
$id
dans ce cas n'est pas une variable dynamique. Savez-vous où je peux en lire plus sur la prise en charge de cette syntaxe? J'ai remarqué que les non-statique de propriétés ne fonctionnent pas (codepad.org/Fb1mQOvx), est-ce aussi parce que la syntaxe n'étant pas pris en charge?Vous obtenez la nouvelle erreur parce que vous êtes en utilisant $this dans une fonction statique. php.net/manual/en/language.oop5.static.php
Oh oui, j'ai oublié à ce sujet! Je vous remercie.
OriginalL'auteur webbiedave
PHP Version 5.3.3, je ne reçois pas toutes les erreurs sur le code.
De sortie:
Votre erreur probable est ailleurs. S'il vous plaît vérifiez que la signalées les numéros de ligne.
Mes excuses, je pensais que vous avez dit, il a travaillé dans les versions antérieures, mais en 5.3 il a été un échec.
Pas de problème, j'aurais fait ma question plus clairement. Je vous remercie.
OriginalL'auteur John Cartwright
Je suis venu ici par la référence:
Erreur de syntaxe PHP 5.2
où Chandresh parlé de votre lien:
comment jamais, un travail autour de PHP 5.2 est:
Ignorer si vous avez déjà résolu. Merci
OriginalL'auteur Rajan Rawal
Un autre cas :
Il peut arriver sur certains serveurs (PHP VERSION ??) si vous utilisez:
if (empty(NAME_OF_A_CONSTANT)) ...
OriginalL'auteur T.Todua