Voici comment écrire le code de la méthode execute()
de la classe Command
qui appelle la méthode abstraite doExecute()
de l’objet instancié et renvoie le résultat de cette dernière, et rendre impossible qu’au moment de la compilation un descendant de classe Command
puisse définir sa propre méthode execute()
:
abstract class Command {
abstract public function doExecute();
final public function execute() {
return $this->doExecute();
}
}
La classe Command
est déclarée comme "abstraite" grâce à l’instruction abstract
, ce qui signifie qu’elle ne peut pas être instanciée directement. Elle contient une méthode abstraite nommée doExecute()
qui doit être définie par les descendants de la classe.
La méthode execute()
de la classe Command appelle la méthode abstraite doExecute()
et renvoie le résultat de cette dernière. Elle est déclarée comme "finale" grâce à l’instruction final
, ce qui signifie qu’elle ne peut pas être surchargée (redéfinie) par les descendants de la classe.
Pour utiliser cette classe, vous devez définir une classe qui en hérite et qui implémente la méthode abstraite doExecute()
:
class ConcreteCommand extends Command {
public function doExecute() {
// Code de la méthode doExecute()
}
}
Vous pouvez ensuite instancier cette classe et appeler la méthode execute()
:
$command = new ConcreteCommand();
echo $command->execute();
Soyez le premier à commenter