Les constantes - Apprendre-PHP.com

Rechercher
Boutique en ligne, solution e-commerce, script PHP et PERL : RAYNETTE

Les constantes

Par ZikoNFS -  4 reponses -  Le 02/07/2009 -  Flux RSS - 

Salut,

 Voila j'ai une classe abstraite Vehicule et une sa classe fille, Voiture.

abstract class Vehicule{
 
const NAME = null;
 
public static getName(){
 
return self::NAME
 
}
 
}
 
class Voiture extends Vehicule{
 
const NAME = "Voiture";
 
}
 
 
 
$name = Voiture::getName();

 Le problème c'est que la const de la classe Vehicule reste toujours null. J'aimerais que la constante de la classe Véhicule récupère la valeur de la constante de la classe fille, Voiture. 

 

Réponses apportées à cette discussion

Par Emacs -  Le 02/07/2009 - 

C'est normal et c'est le but d'une constante, sa valeur ne peut être fixée qu'une fois. Pour faire ce que tu veux faire, il faut que tu utilises les variables de classes, statiques ou non.

++

 

 
Par ZikoNFS -  Le 02/07/2009 - 

Voila quand je n'utilise pas de constante :

  1. abstract class Vehicule{
  2.  
  3. protected $name = null;
  4.  
  5. public static getName(){
  6.  
  7. return $this->name;
  8.  
  9. }
  10.  
  11. }
  12.  
  13. class Voiture extends Vehicule{
  14.  
  15. protected $name = "Voiture";
  16.  
  17. }
  18.  
  19.  
  20.  
  21. $name = Voiture::getName();

 

 Le probleme c'est que la methode getName() est statique donc elle n'accepte pas $this.

 
Par ZikoNFS -  Le 02/07/2009 - 

Mon problème n'est toujours pas résolu.

 

 
Par Emacs -  Le 03/07/2009 - 

Tu fais simplement cela :

  1. <?php
  2.  
  3. abstract class Vehicule
  4. {
  5. static protected $name;
  6.  
  7. static public getName()
  8. {
  9. if (!self::$name)
  10. {
  11. throw new Exception('Static protected $name property must be set in subclasses');
  12. }
  13.  
  14. return self::$name;
  15. }
  16. }
  17.  
  18. class Voiture extends Vehicule
  19. {
  20. static protected $name = 'Voiture';
  21. }

++

 

Ajouter une réponse à la discussion

Seuls les membres loggués sont autorisés à poster dans les forums !