Table des matières
(1) Comprendre la définition d'interface en PHP (Quoi)
(2) Comprendre le rôle des interfaces en PHP (Pourquoi)
(3) Comprendre les scénarios d'utilisation des interfaces en PHP (Où)
(. 4) , Comprendre l'implémentation spécifique des interfaces en PHP (Comment)
(5) Code spécifique
Analyse des idées :
J'espère que cet article pourra vous apporter un peu d'aide, merci ! ! !
Maison développement back-end tutoriel php Explication détaillée de l'interface orientée objet PHP (exemple de code)

Explication détaillée de l'interface orientée objet PHP (exemple de code)

May 26, 2020 am 10:12 AM
面向对象

Objectifs de cet article :

1. Comprendre la définition des interfaces en PHP

2. Comprendre le rôle des interfaces en PHP

. 3. Comprendre les scénarios d'utilisation des interfaces en PHP

4 Comprendre l'implémentation spécifique des interfaces en PHP

Toujours en suivant les idées d'apprentissage précédentes, lorsque l'on apprend une connaissance, il faut apprendre. basé sur les idées de 3w1h

(1) Comprendre la définition d'interface en PHP (Quoi)

Définition : L'interface consiste à combiner différents types de <span style="background-color: rgb(255, 0, 0); color: rgb(255, 255, 255); border: 1px solid rgb(0, 0, 0);">共同行为</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">进行了定义,然后在不同的类里面实现不同的功能</span>

<span style="color: rgb(0, 0, 0);">    或者我们可以理解成它是对事物的一种统一规范,它规定了某个事物必须有哪些行为,比如人这个接口,它就规定了人必须要具备的一些方法,比如吃、喝、拉、撒、走路<span style="color: rgb(0, 0, 0); font-family: monospace;">、</span>说话<span style="color: rgb(0, 0, 0); font-family: monospace;">、</span>眨眼睛<span style="color: rgb(0, 0, 0); font-family: monospace;">、</span>睡觉<span style="color: rgb(0, 0, 0); font-family: monospace;">、</span>思考等,缺少任何一个行为都不是一个正常的人了</span>

(2) Comprendre le rôle des interfaces en PHP (Pourquoi)

Fonction :

1. Standardiser le code : La définition des interfaces est propice à la standardisation du code : en particulier pour certains projets à grande échelle, avec une interface unifiée, d'une part, les développeurs peuvent avoir une compréhension claire et savoir exactement quels services ils souhaitent implémenter en un coup d'œil sur l'interface ; dans le même temps, cela peut également éviter une dénomination peu claire causée par des noms arbitraires des développeurs et une confusion de code, affectant l'efficacité du développement.

2. Maintenabilité améliorée du code : par exemple, si vous souhaitez créer un programme de centre de distribution, il contient une classe de distribution, qui est principalement responsable de la fonction de distribution. Au début, vous pouvez encapsuler certaines des fonctions de distribution auxquelles vous venez de penser dans cette classe de distribution. Mais au fil du temps, vous constaterez peut-être que la classe existante ne peut plus répondre à vos nouveaux besoins, et vous devrez alors repenser cette classe. Mais dans le pire des cas, vous constaterez que cette classe semble inutile pour le moment. . Cela ne sert à rien, mais cette classe peut être référencée à d'autres endroits du code. Si elle est complètement modifiée, cela causera beaucoup de problèmes. Mais si vous le définissez comme une interface au début, mettez certaines des principales fonctions de distribution dans l'interface, puis définissez une autre classe de distribution pour implémenter spécifiquement ces interfaces, alors il vous suffit d'utiliser cette interface pour référencer le Just déjà implémenté. utilisez les classes liées à l'interface. Même si vous souhaitez le modifier à l'avenir, cela fera simplement référence à une autre classe. Cela peut améliorer la maintenabilité et l'évolutivité du code.

3. Rendre le code plus cohérent et à faible couplage

(3) Comprendre les scénarios d'utilisation des interfaces en PHP (Où)

Scénario : Combiné avec sa fonction, le scénario d'utilisation est essentiellement le suivant

1. Si on veut s'assurer qu'une classe est plus standardisée, on peut définir une interface pour cette classe, puis toutes celles qui héritent cette interface Toutes les classes doivent implémenter les méthodes définies dans l'interface

2. Si l'on souhaite améliorer la maintenabilité, la réutilisabilité et l'évolutivité du code, on peut aussi l'envisager, notamment lorsqu'on participe au développement de grands projets Ce faisant, vous devez d'abord déterminer quelles interfaces doivent être définies en premier. Cela équivaut à déterminer d'abord les spécifications. Une fois les spécifications déterminées, l'efficacité sera améliorée lorsque la division du travail et la coopération seront réalisées

(. 4) , Comprendre l'implémentation spécifique des interfaces en PHP (Comment)

Résumé :

1 Définition du nom de l'interface interface { }

2. dans l'interface Il n'y a pas de {}, ce qui signifie que la méthode à l'intérieur n'a pas de partie d'implémentation spécifique

3 La définition de l'interface d'implémentation de classe se fait via le mot-clé Implements, tel que la classe A Implements interface {. >

4. Une fois qu'une classe souhaite implémenter une interface, elle doit implémenter toutes les méthodes définies par l'interface

5 L'interface ne peut pas être instanciée

Utiliser. instanceof pour déterminer si une instance d'une classe est une instance. Une interface est implémentée, telle qu'une instance d'objet A instanceof B interface

Si true est renvoyé, cela signifie que la classe correspondant à l'instance d'objet A implémente B. interface

7. Une interface peut être héritée via extends Une autre interface

8. Lorsqu'une classe souhaite implémenter une sous-interface, elle doit non seulement implémenter les méthodes de la sous-interface, mais également implémenter toutes les méthodes de l'interface parent

Chaque résumé est basé sur la pratique. Eh bien, démontrons le résumé ci-dessus un par un à travers des codes spécifiques

(5) Code spécifique

Cas 1
.

Objectifs pratiques :

1. Définition de l'interface interface nom de l'interface { >

2. Les méthodes dans l'interface n'ont pas {}, ce qui signifie que les méthodes à l'intérieur. Il n'y a pas de partie d'implémentation spécifique

<?php
//接口定义
interface Action{
    public function eat();
    public function walk();
    public function sleep();
}
?>
Copier après la connexion

Résultat de l'exécution : il est vide et aucune erreur n'est signalée

Cas 2

Pratique. objectifs :

1. Une classe doit implémenter la définition d'une interface via le mot-clé Implements, tel que class A Implements interface {}

2. Une fois qu'une classe souhaite implémenter une interface, elle le fait. doit implémenter la définition de l'interface Le résultat d'exécution de toutes les méthodes de

<?php
//接口定义
interface Action{
    public function eat();
    public function walk();
    public function sleep();
}
//定义实现接口的类
class Monkey implements Action{
    //一旦要实现一个接口,就必须要实现接口里面的所有方法
    public function eat(){}
    public function walk(){}
    public function sleep(){}
}
$monkey = new Monkey();

?>
Copier après la connexion

qui n'implémentent pas l'interface est :

Erreur fatale : Class Monkey contient 3 méthodes abstraites et doit donc être déclarée abstraite ou implémentée les méthodes restantes (Action:: eat, Action::walk, Action::sleep) dans D:E-classclass-codeclassingindex.php en ligne 11

Le résultat courant de l'implémentation de l'interface est :

La description vierge est correcte

3. Cas 3

Objectifs pratiques :

1. être instancié

<?php
//接口定义
interface Action{
    public function eat();
    public function walk();
    public function sleep();
}
$action = new Action();

?>
Copier après la connexion

Le résultat en cours d'exécution est :

Erreur fatale : erreur non détectée : impossible d'instancier l'interface Action dans D:E-classclass-codeclassingindex.php:9 Trace de pile : #0 {main} lancé dans D:E- classclass-codeclassingindex.php en ligne 9

4 Cas 4

Objectif pratique : <🎜. >

1. Utilisez instanceof pour déterminer si une instance d'une classe implémente une interface, telle qu'une instance d'objet A de l'interface B

Si true est renvoyé, cela signifie que la classe correspondant à l'instance d'objet A implémente l'interface B

<?php
//接口定义
interface Action{
    public function eat();
    public function walk();
    public function sleep();
}
//定义实现接口的类
class Monkey implements Action{
    public function eat(){}
    public function walk(){}
    public function sleep(){}
}
$monkey = new Monkey();
print_r( $monkey instanceof Action );
?>
Copier après la connexion

Le résultat courant est : 1

5 Cas 5

Objectif pratique : <🎜. >

1. Grâce aux extends, un héritage d'interface Une autre interface

<?php
//接口定义
interface Action{
    public function eat();
    public function walk();
    public function sleep();
}
//接口继承
interface HigherAction extends Action{
    public function talk();
    public function think();
}

?>
Copier après la connexion

6 Cas 6


Objectif pratique :

1. . Lorsqu'une classe veut implémenter une sous-interface Lorsque la classe Human n'implémente que les deux méthodes de HigherAction, le résultat en cours d'exécution est :

Erreur fatale : La classe Human contient 3 méthodes abstraites et doit donc être déclarée abstraite ou. implémentez les méthodes restantes (HigherAction::think, Action::walk, Action::sleep) dans D:E-classclass-codeclassingindex.php à la ligne 14

Quand la classe Human implémente toutes les méthodes de HigherAction et Action , le résultat courant est :

Vide, la description est correcte

(6) Appliquez ce que vous avez appris

Question : Le système de distribution doit être familier à de nombreuses personnes, mais Il existe de nombreux types de systèmes de distribution. Par exemple, les plus courants qui ne sont pas illégaux sont la distribution à 2 niveaux, et les plus illégaux sont la distribution à 3 niveaux. En fait, il existe des systèmes de distribution plus complexes, mais quel que soit leur type. du système de distribution qu'ils sont, ils ont tous des méthodes similaires. Nous espérons transformer ces méthodes en une interface, puis l'implémentation spécifique est laissée aux deux classes de distribution à 2 niveaux et de distribution à 3 niveaux.

Analyse des idées :

1. Pensez d'abord aux méthodes publiques de distribution

2 Encapsulez ces méthodes dans l'interface de distribution

Définition 2. Classes, laissez ces deux classes implémenter respectivement l'interface de distribution

Code spécifique :

<?php
//接口定义
interface Action{
    public function eat();
    public function walk();
    public function sleep();
}
//接口继承
interface HigherAction extends Action{
    public function talk();
    public function think();
}
//定义实现子接口的类
class Human implements HigherAction{
    public function eat(){}
    public function talk(){}
    public function walk(){}
    public function sleep(){}
    public function think(){}
}
$human = new Human();

?>
Copier après la connexion

(7) Résumé

1. Cet article parle principalement de l'interface Définition, fonction et mise en œuvre

J'espère que cet article pourra vous apporter un peu d'aide, merci ! ! !

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Comment implémenter une programmation événementielle orientée objet à l'aide du langage Go Comment implémenter une programmation événementielle orientée objet à l'aide du langage Go Jul 20, 2023 pm 10:36 PM

Comment utiliser le langage Go pour implémenter une programmation événementielle orientée objet Introduction : Le paradigme de programmation orientée objet est largement utilisé dans le développement de logiciels, et la programmation événementielle est un modèle de programmation courant qui réalise le flux du programme à travers le déclenchement et le traitement de contrôle des événements. Cet article présentera comment implémenter une programmation événementielle orientée objet à l'aide du langage Go et fournira des exemples de code. 1. Le concept de programmation événementielle La programmation événementielle est un modèle de programmation basé sur des événements et des messages, qui transfère le contrôle du flux du programme au déclenchement et au traitement des événements. en mode événementiel

Quelle est l'importance de l'annotation @JsonIdentityInfo utilisant Jackson en Java ? Quelle est l'importance de l'annotation @JsonIdentityInfo utilisant Jackson en Java ? Sep 23, 2023 am 09:37 AM

L'annotation @JsonIdentityInfo est utilisée lorsqu'un objet a une relation parent-enfant dans la bibliothèque Jackson. L'annotation @JsonIdentityInfo est utilisée pour indiquer l'identité de l'objet lors de la sérialisation et de la désérialisation. ObjectIdGenerators.PropertyGenerator est une classe d'espace réservé abstraite utilisée pour représenter les situations dans lesquelles l'identifiant d'objet à utiliser provient d'une propriété POJO. Syntaxe@Target(value={ANNOTATION_TYPE,TYPE,FIELD,METHOD,PARAMETER})@Retention(value=RUNTIME)public

Explorez la programmation orientée objet dans Go Explorez la programmation orientée objet dans Go Apr 04, 2024 am 10:39 AM

Le langage Go prend en charge la programmation orientée objet via la définition de type et l'association de méthodes. Il ne prend pas en charge l'héritage traditionnel, mais est mis en œuvre par composition. Les interfaces assurent la cohérence entre les types et permettent de définir des méthodes abstraites. Des cas pratiques montrent comment utiliser la POO pour gérer les informations client, notamment la création, l'obtention, la mise à jour et la suppression d'opérations client.

Analyse des fonctionnalités orientées objet du langage Go Analyse des fonctionnalités orientées objet du langage Go Apr 04, 2024 am 11:18 AM

Le langage Go prend en charge la programmation orientée objet, définissant des objets via des structures, définissant des méthodes à l'aide de récepteurs de pointeurs et implémentant le polymorphisme via des interfaces. Les fonctionnalités orientées objet assurent la réutilisation, la maintenabilité et l'encapsulation du code dans le langage Go, mais il existe également des limitations telles que le manque de concepts traditionnels de classes et d'héritage et de conversions de signatures de méthodes.

Fonctionnalités avancées PHP : meilleures pratiques en matière de programmation orientée objet Fonctionnalités avancées PHP : meilleures pratiques en matière de programmation orientée objet Jun 05, 2024 pm 09:39 PM

Les meilleures pratiques de POO en PHP incluent les conventions de dénomination, les interfaces et les classes abstraites, l'héritage et le polymorphisme, ainsi que l'injection de dépendances. Les cas pratiques incluent : l'utilisation du mode entrepôt pour gérer les données et l'utilisation du mode stratégie pour mettre en œuvre le tri.

Analyse du modèle Flyweight dans la programmation orientée objet PHP Analyse du modèle Flyweight dans la programmation orientée objet PHP Aug 14, 2023 pm 05:25 PM

Analyse du modèle Flyweight dans la programmation orientée objet PHP Dans la programmation orientée objet, le modèle de conception est une méthode de conception logicielle couramment utilisée, qui peut améliorer la lisibilité, la maintenabilité et l'évolutivité du code. Le modèle Flyweight est l’un des modèles de conception qui réduit la surcharge de mémoire en partageant des objets. Cet article explique comment utiliser le mode poids mouche en PHP pour améliorer les performances du programme. Qu’est-ce que le mode poids mouche ? Le modèle de poids mouche est un modèle de conception structurelle dont le but est de partager le même objet entre différents objets.

Existe-t-il des fonctionnalités orientées objet de type classe dans Golang ? Existe-t-il des fonctionnalités orientées objet de type classe dans Golang ? Mar 19, 2024 pm 02:51 PM

Il n'y a pas de concept de classe au sens traditionnel dans Golang (langage Go), mais il fournit un type de données appelé structure, à travers lequel des fonctionnalités orientées objet similaires aux classes peuvent être obtenues. Dans cet article, nous expliquerons comment utiliser les structures pour implémenter des fonctionnalités orientées objet et fournirons des exemples de code concrets. Définition et utilisation des structures Examinons d'abord la définition et l'utilisation des structures. Dans Golang, les structures peuvent être définies via le mot-clé type, puis utilisées si nécessaire. Les structures peuvent contenir des attributs

Partage d'expérience en développement C# : programmation orientée objet et principes de conception Partage d'expérience en développement C# : programmation orientée objet et principes de conception Nov 22, 2023 am 08:18 AM

C# (CSharp) est un langage de programmation orienté objet puissant et populaire, largement utilisé dans le domaine du développement de logiciels. Au cours du processus de développement C#, il est très important de comprendre les concepts de base et les principes de conception de la programmation orientée objet (POO). La programmation orientée objet est un paradigme de programmation qui résume les éléments du monde réel en objets et implémente des fonctions système via des interactions entre objets. En C#, les classes sont les éléments de base de la programmation orientée objet et sont utilisées pour définir les propriétés et le comportement des objets. Lors du développement de C#, il existe plusieurs principes de conception importants

See all articles