2010-04-27 6 views
-1

J'ai commencé en PHP avec 5.3 et j'utilise le '::' pour accéder aux constantes ex; class :: const. Cependant, quand j'essaie d'utiliser mon code dans un PHP plus ancien à savoir 5.1.6 et 5.2.12, j'obtiens une erreur que le '::' est inattendu.PHP 5.3 et '::'

Comment accéder aux constantes dans ces anciennes versions de PHP5?

+1

Peut-être que vous souhaitez publier le code qui génère une erreur afin que nous puissions essayer de vider pour vous. –

Répondre

2

ClassName::constant devrait fonctionner. Selon the documentation, la syntaxe suivante est nouveau en PHP 5.3:

$classname = "MyClass"; 
echo $classname::constant . "\n"; // As of PHP 5.3.0 

$class = new MyClass(); 
$class->showConstant(); 

echo $class::constant."\n"; // As of PHP 5.3.0 

Un code plus complet exemple/réduction peut faciliter le débogage.

1

Il devrait être:

ClassName::CONSTANT_NAME 

Cela devrait fonctionner dans toutes les versions de PHP 5.

+1

En quoi cela diffère-t-il de l'exemple donné? Haut de casse? –

0

Avec l'opérateur :: vous pouvez appeler uniquement les méthodes statiques ou l'accès aux variables/constantes statiques une classe.
La méthode correcte est className :: method() ou className :: publicVariable. À l'intérieur des méthodes statiques, vous ne pouvez pas vous y référer car il n'est pas appelé sur un objet, mais à partir d'une méthode non statique, vous pouvez accéder à une variable statique.

Quoi qu'il en soit, la seule nouvelle fonctionnalité de PHP 5.3 sur le :: operator est la possibilité d'utiliser une chaîne $ qui contient le className.

post vous plaît la partie revelant du code

0

J'ai eu le même problème d'accès à des constantes de classe via le nom de la classe, donc je recours à getters:

public function getSomeConstant() { 
    return self::SomeConstant; 
} 

et dans les parties où je avais besoin:

className::getSomeConstant(); 

Edit: en PHP 5.3 < qui est ...