La différence entre les traits et les interfaces est la suivante : 1. Les traits sont similaires à inclure et peuvent être placés au milieu de la classe en utilisant use. Les méthodes définies font partie de la classe et ne peuvent pas être instanciées directement ; Les méthodes de l'interface sont virtuelles, ces méthodes doivent être redéfinies lors de l'héritage.
La différence entre les traits et les interfaces est :
1 trait
ressemble plus à du code. Un petit plug-in écrit pour être réutilisé, il est similaire à include. Vous pouvez utiliser use pour le placer au milieu d'une classe, afin que les méthodes définies dans le trait puissent être utilisées dans le cadre de la classe et ne puissent pas être directement instanciées. .
2. Les méthodes de interface
sont toutes virtuelles et ces méthodes doivent être redéfinies lors de l'héritage. En d'autres termes, les méthodes sont de nature descriptive et n'ont aucune opération réelle. Lorsque vous héritez, vous devez implémenter ces méthodes, sinon des erreurs se produiront et ne pourront pas manquer. Les interfaces sont souvent utilisées en architecture pour définir de manière abstraite les propriétés et les méthodes appartenant à une instance. Pour faire simple, c’est comme un accord, une tâche assignée par le patron. Si vous souhaitez hériter, vous devez respecter cet accord, c'est-à-dire accomplir les tâches assignées par votre patron.
<?php trait MyTrait { protected $var = 'MyTrait_var'; protected $var1 = 'MyTrait_var'; function __construct() { echo $this->var."</br>"; } function a() { echo "a"."</br>"; } } interface MyInterface { function __construct(); function b(); } abstract class MyAbstract { protected $var2 = 'MyAbstract_var'; use MyTrait; function b() { echo "b"."</br>"; } } class MyClass extends MyAbstract implements MyInterface { protected $var3 = 'MyClass_var'; function c() { echo "c"."</br>"; } } $class = new MyClass(); $class->a(); $class->b(); $class->c();
Dans le code ci-dessus, le function b()
dans MyAbstract peut également être placé dans MyClass
, ou MyAbstract implémente l'interface MyInterface
Recommandations d'apprentissage associées : Programmation PHP du débutant au maître
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!