PHP 5 introduit les classes et les méthodes abstraites.
Il n'est pas autorisé de créer une instance d'une classe définie
comme abstraite. Toutes les classes contenant au moins une méthode
abstraite doivent également être abstraites. Pour définir une méthode
abstraite, il faut simplement déclarer la signature de la méthode et ne
fournir aucune implémentation.
Lors de l'héritage depuis une classe abstraite, toutes les méthodes
marquées comme abstraites dans la déclaration de la classe parent
doivent être définies par l'enfant ; de plus, ces méthodes doivent être
définies avec la même (ou plus faible)
visibilité. Par exemple,
si la méthode abstraite est définie comme protégée, l'implémentation de la
fonction doit être définie en tant que protégée ou publique.
Exemple 19-18. Exemple de classe abstraite
<?php abstract class AbstractClass { // Force la classe étendue à définir cette méthode abstract protected function getValue(); abstract protected function prefixValue($prefix);
// méthode commune public function printOut() { print $this->getValue() . "\n"; } }
class ConcreteClass1 extends AbstractClass { protected function getValue() { return "ConcreteClass1"; }
public function prefixValue($prefix) { return "{$prefix}ConcreteClass1"; } }
class ConcreteClass2 extends AbstractClass { public function getValue() { return "ConcreteClass2"; }
public function prefixValue($prefix) { return "{$prefix}ConcreteClass2"; } }
$class1 = new ConcreteClass1; $class1->printOut(); echo $class1->prefixValue('FOO_') ."\n";
$class2 = new ConcreteClass2; $class2->printOut(); echo $class2->prefixValue('FOO_') ."\n"; ?>
|
L'exemple ci-dessus va afficher : ConcreteClass1
FOO_ConcreteClass1
ConcreteClass2
FOO_ConcreteClass2 |
|
Du code ancien n'ayant aucune classe ou fonction nommée
abstract devrait fonctionner sans modifications.