Qu'est-ce qu'une classe abstraite en PHP ?

Constantes en PHP POO
interface php vs classe abstraite

Dans cet article complet, nous approfondirons le domaine des classes abstraites PHP. Cet article vous offrira un aperçu complet de la façon d'utiliser les classes abstraites dans vos projets de développement PHP, de la compréhension des principes à l'examen de la syntaxe et de l'implémentation. Cet article vous fournira les connaissances et les capacités nécessaires pour travailler avec succès avec des classes abstraites dans votre code, que vous soyez un débutant ou un développeur expérimenté.

Une classe abstraite contient la déclaration des méthodes mais pas leur définition. Il ne contient que leurs noms. Il est de la responsabilité de la classe enfant de définir ces méthodes.

Qu'est-ce qu'une méthode abstraite ?

Une méthode abstraite est une méthode d'une classe abstraite qui est déclarée à l'aide de mots-clés abstraits et ne contient pas le corps. Il est défini par la classe de l'enfant.

  • résumé Le mot-clé est utilisé pour déclarer une classe ou une méthode abstraite.
  • Une classe abstraite doit contenir au moins une méthode abstraite. Cependant, il peut également contenir des méthodes non abstraites.

Syntaxe

<?php
abstract class ParentClass {
  abstract public function someMethod1();
  abstract public function someMethod2($name, $color);
  abstract public function someMethod3() : string;
}
?>

Quelles sont les règles de la classe abstraite en PHP ?

  • Une classe abstraite doit contenir au moins une méthode abstraite. Cependant, il peut également contenir des méthodes non abstraites.
  • Lorsqu'un enfant appelé hérite de la classe parent abstraite, il doit définir les méthodes abstraites de la classe parent du même nom.
  • Lors de la définition des méthodes asbtract dans la classe enfant, elle doit être définie avec un modificateur d'accès moins restreint. Par exemple, si la classe parent contient la méthode abstraite ayant protégé modificateur d'accès. Ainsi, lorsque la classe enfant définit cette méthode, elle doit conserver son modificateur d'accès en tant que protégé or public. Il ne peut pas le régler sur Privé, car il est plus restreint que le protégé.
  • La classe enfant définissant la méthode abstraite doit transmettre le même nombre d'arguments comme spécifié dans la déclaration dans la classe asbtract parent. Cependant, la classe enfant peut avoir des arguments facultatifs/supplémentaires autres que ceux requis.

Exemple de classe abstraite en PHP

Explication de l'exemple ci-dessus

<!-- wp:code -->
<pre class="wp-block-code"><code><?php
// Parent abstract class
abstract class Bike {
  public $name;
  public function __construct($name) {
    $this->name = $name;
  }
  abstract public function introduction() : string;
}

// Child classes defining the parent classes
class Honda extends Bike {
  public function intro() : string {
    return "I am $this->name!";
  }
}

class Suzuki extends Bike {
  public function introduction() : string {
    return "I am $this->name!";
  }
}

// Objects from child classes
$honda = new honda("Honda");
echo $honda->introduction();

$suzuki= new suzuki("Suzuki");
echo $suzuki->introduction();

?></code></pre>
<!-- /wp:code -->
  • Dans l'exemple ci-dessus, nous créons une classe abstraite Bicyclette qui contient une méthode abstraite introduction.
  • Nous créons deux classes enfants Honda et Suzuki qui étend la classe abstraite et définit la méthode d'introduction.
  • Nous créons les objets de ces classes et appelons la méthode d'introduction en utilisant leurs objets. La méthode d'introduction fonctionne selon l'implémentation donnée par sa classe correspondante.

Exemple de classe abstraite avec des arguments supplémentaires dans la substitution de méthode

<?php
// Parent abstract class
abstract class Bike {
  public $name;
  public function __construct($name) {
    $this->name = $name;
  }
  abstract protected function introduction($model) : string;
}

// Child classes defining the parent classes
class Honda extends Bike {
  public function intro($model) : string {
    return "I am $this->name. My model is $model";
  }
}

class Suzuki extends Bike {
  public function introduction($model, $color=null) : string {
    return "I am $this->name. My model is $model and color is $color";
  }
}

// Objects from child classes
$honda = new honda("Honda");
echo $honda->introduction();

$suzuki= new suzuki("Suzuki");
echo $suzuki->introduction();
?>

Explication de l'exemple ci-dessus

  • La logique de base de l'exemple ci-dessus est similaire à l'exemple précédent. Cependant, nous passons un argument supplémentaire à la fonction dans la méthode d'introduction de suzuki classe.
  • Comme nous avons défini la règle plus tôt dans ce didacticiel, le modificateur d'accès de la classe enfant lors de l'implémentation de la méthode abstraite de la classe parent doit être inférieur à celui spécifié dans la classe parent pour la déclaration de cette méthode. Ainsi, les deux classes enfants utilisent le modificateur d'accès public pour définir la méthode d'introduction.
  • Essayez de définir la fonction avec le modificateur d'accès privé, cela produira une erreur.

Remarque : la classe abstraite ne contient aucune méthode constructeur. Ainsi, nous ne pouvons pas créer l'instance d'une classe abstraite.

Abstraction de classe Documentation officielle PHP 8.

Constantes en PHP POO
interface php vs classe abstraite
close

Restez à jour sur PHP !

Nous ne spammons pas !

en English
X
Remonter en haut