Les classes abstraites en PHP

Les classes abstraites sont des classes qui contient au moins une méthode abstraite. Les classes abstraites en PHP sont déclarées à l’aide du mots-clés abstract. Toutes les classes de base implémentant la classe abstraite doivent donner une implémentation des méthodes abstraites déclarées dans la classe mère. Une classe abstraite peut contenir des méthodes abstraites aussi bien que des méthodes non abstraites.
 
 

Exemple:
<?php  
	abstract class myClasse 
	{ 
		// C'est une fonction abstraite 
		abstract function show(); 
		  
		// Ce n'est pas une fonction abstraite 
		function display() 
		{ 
			echo "Hello World!"; 
		} 
	} 
?>

 

Voici quelques règles importants sur les classes abstraites en PHP.
1. On peut pas instancier une classe abstraite.
<?php 
	// Classe abstraite
	abstract class A {
		// fonction abstraite
		abstract function show(); 
	} 

	class B extends A { 
		function show() { 
			echo "Hello World!"; 
		} 
	} 

	// La ligne suivante produit une erreur de compilation
	// $a = new A();  
		  
	$b = new B; 
	$b->show(); 
?>

La sortie :

Hello World!

Lors de l’héritage d’une classe abstraite(B –> A), la méthode de la classe fille doit être définie avec le même nom. Ainsi, si la méthode abstraite est définie comme « protected », la méthode de la classe fille doit être définie comme « protected » ou « public », mais pas « private ». En plus, le type et le nombre d’arguments requis doivent être les mêmes. Pourtant, les classes fille peuvent avoir des arguments optionnels en plus.
 
 

2. Une classe abstraite peut avoir un constructeur.
<?php 
	// Classe abstraite
	abstract class A {
		function __construct() { 
			echo "Constructeur de la classe abstrait.\n"; 
		}
		// fonction abstraite
		abstract function show(); 
	} 

	class B extends A { 
		function __construct() { 
			echo "Constructeur de la classe fille.\n "; 
		} 
		function show() { 
			echo "Hello World!"; 
		} 
	} 

	$b = new B; 
	$b->show(); 
?>

La sortie :

Constructeur de la classe fille.
Hello World!

 
3. Une classe abstraite ne peut pas contenir une méthode avec un corps. Si nous exécutons l’exemple suivant, alors il affichera un message d’erreur.

<?php 
	abstract class A { 
		abstract function show() { 
			echo "Hello World!";  
		} 
	} 
?>

La sortie :

PHP Fatal error: Abstract function A::show() cannot contain body

 
 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.