[PHP] L'opérateur de résolution de portée (::)


dorian53
WRInaute passionné
WRInaute passionné
 
Messages: 2199
Inscription: 10 Avr 2005

[PHP] L'opérateur de résolution de portée (::)

Message le Mer Jan 21, 2009 17:33

Bonjour,

Sachant que PHP 5.3.0 n'est encore qu'à la version Alpha, existe-t-il une solution pour réaliser cette opération avec une version de PHP inférieure.

Merci

Code: Tout sélectionner
<?php
class MyClass {
    const CONST_VALUE = 'Une valeur constante';
}

$classname = 'MyClass';
echo $classname::CONST_VALUE; // Depuis PHP 5.3.0
?>


http://fr.php.net/manual/fr/language.oo ... otayim.php


YoyoS
WRInaute accro
WRInaute accro
 
Messages: 3827
Inscription: 14 Sep 2006

Message le Mer Jan 21, 2009 17:40

Je crois pas, déclare en public static sinon.


Bool
WRInaute passionné
WRInaute passionné
 
Messages: 1290
Inscription: 26 Fév 2004

Message le Mer Jan 21, 2009 18:09

et {$classname}::CONST_VALUE, ça donne un parse error ?

BlackPot
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 18
Inscription: 20 Aoû 2008

Message le Mer Jan 21, 2009 18:54

Code: Tout sélectionner
<?php
class MyClass {
    const CONST_VALUE = 'Une valeur constante';
}

$cste = MyClass::CONST_VALUE;

echo $cste;

?>


Tu peux essayer ça mais je ne sais pas si cela correspond à ta demande niveau instanciation (testé PHP 5.2.5)


dorian53
WRInaute passionné
WRInaute passionné
 
Messages: 2199
Inscription: 10 Avr 2005

Message le Jeu Jan 22, 2009 9:54

Bool a écrit:et {$classname}::CONST_VALUE, ça donne un parse error ?

En effet, ça ne passe pas.


BlackPot a écrit:
Code: Tout sélectionner
<?php
class MyClass {
    const CONST_VALUE = 'Une valeur constante';
}

$cste = MyClass::CONST_VALUE;

echo $cste;

?>


Tu peux essayer ça mais je ne sais pas si cela correspond à ta demande niveau instanciation (testé PHP 5.2.5)

Non le nom de la classe doit être contenu dans une variable.

Merci tout de même.


dorian53
WRInaute passionné
WRInaute passionné
 
Messages: 2199
Inscription: 10 Avr 2005

Message le Jeu Jan 22, 2009 10:13

Réponse.

Code: Tout sélectionner
class MyClass {
    const CONST_VALUE = 'Une valeur constante';
}

$classname = 'MyClass';

eval("echo ".$classname."::CONST_VALUE;");


Bool
WRInaute passionné
WRInaute passionné
 
Messages: 1290
Inscription: 26 Fév 2004

Message le Jeu Jan 22, 2009 19:12

ouais enfin à coup d'eval c'est plutôt crade comme approche ;)


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités