Les constantes
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
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.
++
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.
Mon problème n'est toujours pas résolu.
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';
}
++