Maison > développement back-end > Problème PHP > Quelle est la différence entre les traits et les interfaces ?

Quelle est la différence entre les traits et les interfaces ?

coldplay.xixi
Libérer: 2023-03-01 20:04:01
original
3782 Les gens l'ont consulté

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.

Quelle est la différence entre les traits et les interfaces ?

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 = &#39;MyTrait_var&#39;;
    protected $var1 = &#39;MyTrait_var&#39;;
 
    function __construct()
    {
        echo $this->var."</br>";
    }
 
    function a()
    {
        echo "a"."</br>";
    }
}
 
interface MyInterface
{
    function __construct();
    function b();
}
 
abstract class MyAbstract
{
    protected $var2 = &#39;MyAbstract_var&#39;;
    use MyTrait;
 
    function b()
    {
        echo "b"."</br>";
    }
}
 
class MyClass extends MyAbstract implements MyInterface
{
    protected $var3 = &#39;MyClass_var&#39;;
    function c()
    {
        echo "c"."</br>";
    }
}
 
$class = new MyClass();
$class->a();
$class->b();
$class->c();
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal