Les constantes

Rechercher

Les constantes

Par ZikoNFS  -  4 reponses  -  Le 02/07/2009 16:38  -  Editer  - 

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 17:15  -  Haut de page  - 

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 19:31  -  Haut de page  - 

Voila quand je n'utilise pas de constante :

abstract class Vehicule{   protected $name = null;   public static getName(){     return $this->name;   }  }  class Voiture extends Vehicule{   protected $name = "Voiture";  }    $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 21:30  -  Haut de page  - 

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

 
Par Emacs  -  Le 03/07/2009 09:34  -  Haut de page  - 

Tu fais simplement cela :

<?php
abstract class Vehicule
{
  static protected $name;
  static public getName()
  {
    if (!self::$name)
    {
      throw new Exception('Static protected $name property must be set in subclasses');
    }
    return self::$name;
  }
}
class Voiture extends Vehicule
{
  static protected $name = 'Voiture';
}

++

 

Ajouter une réponse à la discussion

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

Identifiez-vous
Join |  ID/MDP? |