Maison  >  Article  >  développement back-end  >  Parler de l'utilisation de l'interface en PHP

Parler de l'utilisation de l'interface en PHP

青灯夜游
青灯夜游avant
2020-07-23 17:05:383129parcourir

Parler de l'utilisation de l'interface en PHP

En effet, l'interface PHP a sa utilité.

Ce sont des contrats, des manuels d'instructions pour d'autres développeurs. Cependant, il est encore difficile de comprendre à quoi sert l’interface.

Basic

Interface est une classe abstraite qui ne peut pas être directement instanciée, mais peut être implémentée.

Ceci est un exemple de base

interface MyInterface {
    public function setName(string $name);
    public function getName();
}

class MyClass implements MyInterface {
    private $name; 

    public function setName(string $name) { 
        $this->name = $name; 
    }

    public function getName() {
        return $this->name; 
    }
}

MyClass doit implémenter les méthodes setName() et getName(). Si vous ne le faites pas, vous obtiendrez une erreur fatale.

Erreur fatale : La classe MyClass contient 2 méthodes abstraites et doit donc être déclarée abstraite ou implémenter les méthodes restantes (MyInterface::setName, MyInterface::getName)

De plus, les méthodes définies dans l'interface L'accessibilité doit être publique et les membres de la classe ne peuvent pas être définis dans l'interface.

Cause

Les développeurs utilisent des interfaces pour décrire le comportement courant d'une classe ou d'un groupe de classes.

Mais pourquoi est-il uniquement responsable de l'encapsulation de l'implémentation et non responsable de la gestion des détails de chaque classe ?

Pour le découplage ! L'interface

vous permet de modifier l'implémentation sans changer les détails, c'est-à-dire la façon dont vous utilisez cette implémentation.

Exemples plus avancés

Tout système de mise en cache nécessite la fonctionnalité suivante

  • Stocker/définir le cache dans le contenu
  • Récupérer le contenu dans le cache
  • Supprimer le contenu dans le cache

Sur cette base, nous pouvons créer l'interface de cache suivante

interface CacheInterface {
    public function set(string $key, $val);
    public function get(string $key);
    public function delete(string $key);
}

De cette façon, les développeurs peuvent savoir qu'ils doivent implémenter l'interface de cache. Nous n'avons pas besoin de savoir comment l'implémenter. Le résultat est que nous pouvons facilement changer de système de cache sans changer la façon dont il est utilisé

Par conséquent, il est facile de changer de système de cache sans changer la façon dont le système de cache est utilisé dans le projet.

Exemple Symfony

Regardons l'application spécifique de l'exemple tout à l'heure. Pour Symfony, si vous souhaitez implémenter un système de mise en cache, la meilleure pratique est de le faire comme suit

use Symfony\Contracts\Cache\CacheInterface;

class MyClass {
    private $cache;
    public function __construct(CacheInterface $cache)
    {
        $this->cache = $cache;
    }
}

Injecter l'interface de cache dans notre classe via l'injection de dépendances. La prochaine fois que nous modifierons le système de cache, la classe MyClass n'aura pas besoin d'apporter de modifications.

Implémentations multiples VS héritage multiple

PHP ne prend pas en charge l'héritage multiple, la méthode suivante est impossible

class MyClass extends ClassX, ClassY {}

Une partie de la raison pour laquelle cela n'est pas autorisé est à cause du problème Diamond

Cependant, vous pouvez le faire

class ClassY extends ClassX {}
class MyClass extends ClassY {}

mais ClassX et ClassY peuvent gérer des choses différentes, donc utiliser l'héritage. cela n'a aucun sens.

Si vous souhaitez effectuer plusieurs comportements, vous pouvez avoir plusieurs interfaces

class MyClass implements InterfaceX, InterfaceY {}

En d'autres termes, vous pouvez demander à certaines classes de partager certaines fonctionnalités au lieu de partager une classe parent.

Résumé

L'interface PHP est un modèle de méthode d'une classe, ce qui est très utile pour une implémentation et une utilisation découplées.

Cette fonctionnalité est particulièrement utile lorsque vous devez maintenir la flexibilité et vous assurer que tous les développeurs suivent un ensemble de règles.

[Recommandations de didacticiel associées : "Tutoriel PHP"]

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer