Abstraction et interface de partie PHP POO
Dans cette série, je couvrirai les principes fondamentaux de la programmation orientée objet (POO) PHP. Le contenu sera organisé en parties séquentielles, chacune se concentrant sur un sujet spécifique. Si vous êtes débutant ou si vous n'êtes pas familier avec les concepts de POO, cette série est conçue pour vous guider étape par étape. Dans cette partie, je discuterai de l'abstraction et de l'interface en PHP. Commençons ensemble le voyage d’apprentissage de PHP OOP !
Qu’est-ce que l’abstraction en PHP ?
Nous savons qu'en programmation orientée objet, l'abstraction est un concept important. Alors, qu’est-ce que l’abstraction ? L'abstraction fait référence au fait de masquer les détails de mise en œuvre d'un programme, en affichant uniquement ses fonctionnalités.
Essayons maintenant de comprendre comment fonctionne l'abstraction en PHP. Tout d’abord, nous examinerons un exemple simple dans lequel il y aura une classe parent et une ou plusieurs classes enfants hériteront de cette classe parent. Après cela, nous discuterons des inconvénients de cette approche.
Exemple de code
class Vehicle { public function getBaseFare() { // implementation } public function getPerKiloFare() { // implementation } public function getTotalFare() { // implementation } } class Car extends Vehicle { // Car implementation } class Bike extends Vehicle { // Bike implementation }
Ici, nous pouvons voir que la classe Vehicle est héritée par les classes Car et Bike. En conséquence, ces deux classes ont accès aux méthodes présentes dans la classe Vehicle. Cependant, il y a un problème : les méthodes de la classe parent sont livrées avec leurs implémentations, dont héritent les classes enfants. Cela signifie que toutes les classes enfants partageront une implémentation commune et se comporteront de la même manière. Mais cela ne devrait pas être le cas car le comportement d’une voiture devrait être différent de celui d’un vélo. Cependant, puisque nous avons hérité des méthodes de la classe parent, les deux classes se comportent de la même manière.
Maintenant, que pouvons-nous faire si, après avoir hérité de ces méthodes communes, nous souhaitons qu'elles se comportent différemment pour chaque classe ?
Pour résoudre ce problème, PHP fournit la classe Abstract. Qu'est-ce qu'une classe abstraite ?
Une classe abstraite est un type de classe qui peut avoir à la fois des méthodes abstraites et des méthodes non abstraites. Alors, que sont les méthodes abstraites et non abstraites ?
Les méthodes abstraites sont des méthodes qui n'ont qu'une définition mais aucune implémentation. Par conséquent, lorsqu'une classe enfant hérite de la classe parent, elle doit fournir une implémentation pour les méthodes abstraites de la classe parent.
Les méthodes non abstraites sont des méthodes qui ont à la fois une définition et une implémentation dans la classe parent. La classe enfant hérite simplement de ces méthodes et peut les utiliser.
Maintenant, nous allons essayer de résoudre le problème ci-dessus en utilisant une classe abstraite.
Exemple de code
class Vehicle { public function getBaseFare() { // implementation } public function getPerKiloFare() { // implementation } public function getTotalFare() { // implementation } } class Car extends Vehicle { // Car implementation } class Bike extends Vehicle { // Bike implementation }
Ici, nous pouvons voir qu'il existe une classe nommée Vehicle. Si nous voulons créer une classe abstraite, nous devons utiliser le mot-clé abstract avant le nom de la classe. La classe Vehicle est donc une classe abstraite. De même, si nous voulons créer une méthode dans une classe abstraite, nous devons utiliser le mot-clé abstract avant le nom de la méthode. Il est important de noter que si nous voulons rendre abstrait n’importe quel membre d’une classe, cette classe doit également être une classe abstraite.
Désormais, les méthodes abstraites héritées de la classe Vehicle ont été implémentées différemment dans chaque classe enfant. En conséquence, ces méthodes se comporteront différemment et fourniront des résultats différents pour chaque classe enfant.
Maintenant, on pourrait se demander pourquoi nous avons dû abstraire les méthodes getBaseFare et getPerKiloFare dans la classe parent alors que nous aurions pu simplement les implémenter directement dans les classes enfants.
Si vous y prêtez attention, vous remarquerez que dans la classe parent, les méthodes getBaseFare et getPerKiloFare sont utilisées au sein d'une autre méthode. Mais si nous n'avions pas abstrait getBaseFare et getPerKiloFare et ne les avions implémentés que dans les classes enfants, nous n'y aurions pas eu accès dans la classe parent. Par conséquent, les méthodes auxquelles les classes parent et enfant doivent accéder, et dont le comportement doit être différent dans chaque classe enfant, sont abstraites.
Il est important de noter qu’une classe abstraite ne peut pas être instanciée directement. Au lieu de cela, on y accède via la classe enfant, et les méthodes abstraites héritées de la classe abstraite doivent être implémentées dans la classe enfant. Si cela n’est pas fait, rien ne fonctionnera dans la classe enfant. J'espère que cela vous permettra de mieux comprendre comment utiliser les classes abstraites.
Qu’est-ce que l’interface en PHP ?
Dans la discussion précédente, nous avons parlé de classes abstraites. De là, nous avons appris que lorsqu’on hérite de méthodes abstraites d’une classe abstraite, ces méthodes doivent être implémentées dans la classe enfant ; sinon, rien dans la classe enfant ne fonctionnera.
Mais que se passe-t-il si, dans une classe enfant, l'une des méthodes abstraites n'est pas nécessaire, mais qu'elle doit quand même être implémentée ? Ce ne serait pas une bonne solution. Alors, que pouvons-nous faire dans ce cas ?
Dans cette situation, on peut utiliser des interfaces. Une interface est similaire à une classe abstraite, mais une classe abstraite n'est pas entièrement abstraite car, comme nous le savons, une classe abstraite peut avoir à la fois des membres abstraits et non abstraits.
En revanche, une interface ne peut avoir que des membres abstraits. En conséquence, une interface est considérée comme une classe entièrement abstraite. Maintenant, nous allons essayer de résoudre le problème ci-dessus en utilisant une interface.
Exemple de code
class Vehicle { public function getBaseFare() { // implementation } public function getPerKiloFare() { // implementation } public function getTotalFare() { // implementation } } class Car extends Vehicle { // Car implementation } class Bike extends Vehicle { // Bike implementation }
Ici dans l'interface, nous voyons la déclaration de la fonction getHourlyRate. Ensuite, dans la classe Car, nous utilisons (implémentons ou héritons) cette interface et fournissons l'implémentation de la méthode abstraite à l'intérieur de l'interface. Cependant, dans la classe Bike, nous n'avons pas eu à implémenter cette méthode car nous n'avons pas utilisé (implémenté ou hérité) l'interface de la classe Bike. Mais si cette méthode abstraite avait été dans une classe abstraite, nous aurions été obligés de l’implémenter dans les deux classes enfants, même si elle n’était pas nécessaire, ce qui aurait abouti à une mauvaise conception. De plus, les interfaces ont divers autres cas d'utilisation.
J'espère que cet épisode vous a permis d'acquérir une compréhension de base des sujets abordés. C'est tout pour aujourd'hui. Nous en reparlerons dans la prochaine leçon.
Vous pouvez me contacter sur GitHub et Linkedin.
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

La fonction d'énumération dans PHP8.1 améliore la clarté et la sécurité du type du code en définissant les constantes nommées. 1) Les énumérations peuvent être des entiers, des chaînes ou des objets, améliorant la lisibilité du code et la sécurité des types. 2) L'énumération est basée sur la classe et prend en charge des fonctionnalités orientées objet telles que la traversée et la réflexion. 3) L'énumération peut être utilisée pour la comparaison et l'attribution pour assurer la sécurité du type. 4) L'énumération prend en charge l'ajout de méthodes pour implémenter une logique complexe. 5) La vérification stricte et la gestion des erreurs peuvent éviter les erreurs courantes. 6) L'énumération réduit la valeur magique et améliore la maintenabilité, mais prêtez attention à l'optimisation des performances.

Le détournement de la session peut être réalisé via les étapes suivantes: 1. Obtenez l'ID de session, 2. Utilisez l'ID de session, 3. Gardez la session active. Les méthodes pour empêcher le détournement de la session en PHP incluent: 1. Utilisez la fonction Session_RegeReate_id () pour régénérer l'ID de session, 2. Stocker les données de session via la base de données, 3. Assurez-vous que toutes les données de session sont transmises via HTTPS.

L'application du principe solide dans le développement de PHP comprend: 1. Principe de responsabilité unique (SRP): Chaque classe n'est responsable d'une seule fonction. 2. Principe ouvert et ferme (OCP): les changements sont réalisés par extension plutôt que par modification. 3. Principe de substitution de Lisch (LSP): les sous-classes peuvent remplacer les classes de base sans affecter la précision du programme. 4. Principe d'isolement d'interface (ISP): utilisez des interfaces à grain fin pour éviter les dépendances et les méthodes inutilisées. 5. Principe d'inversion de dépendance (DIP): les modules élevés et de bas niveau reposent sur l'abstraction et sont mis en œuvre par injection de dépendance.

Liaison statique (statique: :) implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Les principes de conception de Restapi incluent la définition des ressources, la conception URI, l'utilisation de la méthode HTTP, l'utilisation du code d'état, le contrôle de version et les haineux. 1. Les ressources doivent être représentées par des noms et maintenues dans une hiérarchie. 2. Les méthodes HTTP devraient être conformes à leur sémantique, telles que GET est utilisée pour obtenir des ressources. 3. Le code d'état doit être utilisé correctement, tel que 404 signifie que la ressource n'existe pas. 4. Le contrôle de la version peut être implémenté via URI ou en-tête. 5. Hateoas bottise les opérations du client via des liens en réponse.

En PHP, la gestion des exceptions est réalisée grâce aux mots clés d'essai, de catch, enfin et de lancement. 1) Le bloc d'essai entoure le code qui peut lancer des exceptions; 2) Le bloc de capture gère les exceptions; 3) Enfin, Block garantit que le code est toujours exécuté; 4) Le lancer est utilisé pour lancer manuellement les exceptions. Ces mécanismes aident à améliorer la robustesse et la maintenabilité de votre code.

La fonction principale des classes anonymes en PHP est de créer des objets uniques. 1. Les classes anonymes permettent aux classes sans nom d'être définies directement dans le code, ce qui convient aux exigences temporaires. 2. Ils peuvent hériter des classes ou implémenter des interfaces pour augmenter la flexibilité. 3. Faites attention aux performances et à la lisibilité au code lorsque vous l'utilisez et évitez de définir à plusieurs reprises les mêmes classes anonymes.
