Maison > Article > développement back-end > Quelles sont les fonctions des classes d’interface PHP et des classes abstraites ?
1.php Interface Class:interface
En fait, leur rôle est très simple Lorsque plusieurs personnes développent un projet ensemble, elles peuvent toutes en appeler d'autres. Si vous écrivez des classes, vous vous demanderez comment savoir comment nommer la méthode d'implémentation d'une certaine fonction. À ce stade, la classe d'interface php entre en jeu. Lorsque nous définissons une classe d'interface, la méthode doit y être. être implémenté par les sous-classes suivantes, par exemple :
Le code est le suivant :
interface Shop { public function buy($gid); public function sell($gid); public function view($gid); }
Je déclare une classe d'interface boutique et définis trois méthodes : Acheter, sell et view, alors toutes les sous-classes qui héritent de de doivent implémenter l'une de ces trois méthodes. Si la sous-classe ne les implémente pas, alors Impossible d'exécuter. En fait, la classe d'interface est, pour parler franchement, le modèle d'une classe et les règlements d'une classe. Si vous appartenez à cette catégorie, vous devez suivre mes règlements. Peu importe comment vous le faites, je m'en fiche. comment vous le faites. Cela dépend de vous. Des choses comme :
Le code est le suivant :
class BaseShop implements Shop { public function buy($gid) { echo('你购买了ID为 :'.$gid.'的商品'); } public function sell($gid) { echo('你卖了ID为 :'.$gid.'的商品'); } public function view($gid) { echo('你查看了ID为 :'.$gid.'的商品'); } }
Pensez-y, dans un grand projet où de nombreuses personnes collaborent, c'est tellement pratique d'avoir des classes d'interface, comme celle-ci. Vous n'avez pas besoin de demander aux autres quel est le nom de la méthode de votre fonction. Bien sûr, si vous aimez ça, je n'y peux rien.
Conclusion : la classe d'interface est le leader d'une classe, indiquant la direction, et la sous-classe doit compléter la méthode désignée.
2.php Classe abstraite : abstract
En fait, les classes abstraites et les classes d'interface sont partiellement similaires. Rappelez-vous où j'ai vu cette phrase, les classes abstraites extraient les parties similaires. , mais en fait, cela dit la vérité sur les classes abstraites. La fonction des classes abstraites est que lorsque vous constatez que beaucoup de vos classes utilisent de nombreuses méthodes que vous répétez sans cesse, vous pouvez alors envisager d'utiliser des classes abstraites. Vous pouvez dire : « Je peux. "Il n'est pas nécessaire de réécrire une classe, d'instancier chaque classe publique individuellement et d'appeler la même méthode." Oui, c'est possible. En fait, c'est ce que font les classes abstraites, mais cela vous évite l'étape d'instanciation, ce qui la rend aussi pratique que d'appeler la méthode de cette classe directement, et vous pouvez également surcharger cette méthode. Par exemple :
Le code est le suivant :
abstract class BaseShop { public function buy($gid) { echo('你购买了ID为 :'.$gid.'的商品'); } public function sell($gid) { echo('你卖了ID为 :'.$gid.'的商品'); } public function view($gid) { echo('你查看了ID为 :'.$gid.'的商品'); } } class BallShop extends BaseShop { var $itme_id = null; public function construct() { $this->itme_id = 2314; } public function open() { $this->sell($this->itme_id); } }
Voici un exemple Comme ci-dessus, j'ai défini une classe de magasin et extrait toutes ses parties comme, buy (. buy), sell (sell), look (view), et ces méthodes sont implémentées dans la classe abstraite, puis la sous-classe qui en hérite obtiendra automatiquement ces méthodes, et la sous-classe fera ses propres choses, introduira la duplication de code, et améliorer la réutilisabilité.
Conclusion : une classe abstraite est un fournisseur de services d'une classe. Elle propose de nombreux services. Vous n'êtes pas obligé de les utiliser en cas de besoin. Si vous n'êtes pas satisfait de ne pas fournir de services, vous pouvez le faire. toi-même.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!