Rasgos vs. Interfaces en PHP

La principal diferencia entre los rasgos y las interfaces en PHP es que los rasgos definen la implementación real de cada método dentro de cada clase, por lo que muchas clases implementan la misma interfaz pero tienen un comportamiento diferente, mientras que los rasgos son solo fragmentos de código inyectados en una clase en PHP. .

Rasgos

Los rasgos no son interfaces en absoluto. Los rasgos pueden definir tanto miembros estáticos como métodos estáticos. Ayuda a los desarrolladores a reutilizar métodos libremente en varias clases independientes en diferentes jerarquías de clases. Traits reduce la complejidad y evita problemas asociados con herencia múltiple y Mixins. Tenga en cuenta que PHP no permite la herencia múltiple. Entonces, Traits se usa para llenar este vacío al permitirnos reutilizar la misma funcionalidad en múltiples clases.

Sintaxis:

<?php
// A sample trait in PHP
trait namethis {
    function ReturnType() {  }
    function ReturnDescription() {  }
}?>

Los rasgos no pueden implementar interfaces. Un rasgo permite que ambas clases lo usen para un requisito de interfaz común. Admite el uso de métodos abstractos. Permite la composición horizontal del comportamiento a la herencia tradicional. Los rasgos son un mecanismo para la reutilización de código en lenguajes de herencia única como PHP. Escriba el mismo código de nuevo, para evitar esto, use los rasgos. Los rasgos se utilizan cuando varias clases comparten la misma funcionalidad.

Ejemplo:

<?php
// PHP program to demonstrate working
// of trait.
trait HelloGeeks {
    public function geeks() {
        echo 'Hello World!';
    }
}
  
class Geeksforgeeks {
    use HelloGeeks;
    public function geeks() {
        echo 'Hello Geeks!';
    }
}
  
$obj = new Geeksforgeeks();
$obj->geeks();
?>

Producción:

Hello Geeks!

Interfaz

Especifica las listas de todos los métodos que debe implementar una clase. Use la palabra clave Interfaz para implementar la misma interfaz que una clase. Puede extender una interfaz usando el operador extends. Todos los métodos en Interface son métodos abstractos y pueden tener sus propias constantes. Hay un concepto de clase concreto que es una clase que implementa una interfaz que debe implementar todos los métodos que tienen los mismos nombres y firmas.
Todos los métodos en la interfaz deben tener un nivel de acceso público.

Sintaxis:

<?php
// A sample interface in PHP
interface MyInterface
{
 // function...
}

Una clase en particular no puede implementar dos interfaces que tengan el mismo nombre de método y firmas porque da error. También ayuda en la herencia múltiple porque una clase puede implementar más de una interfaz mientras que puede extender solo una clase. Las implementaciones se pueden cambiar sin afectar a la persona que llama a la interfaz.

Ejemplo:

<?php 
// PHP program to demonstrate working
// of interface.
interface MyInterface{ 
  
    public function examplemethod1(); 
    public function examplemethod2(); 
  
} 
  
class MyClass implements MyInterface{ 
  
    public function examplemethod1(){ 
        echo "ExampleMethod1 Called" . "\n"; 
    } 
  
    public function examplemethod2(){ 
        echo "ExampleMethod2 Called". "\n"; 
    } 
} 
  
$ob = new MyClass; 
$ob->examplemethod1(); 
$ob->examplemethod2(); 
  
?> 

Producción:

ExampleMethod1 Called
ExampleMethod2 Called

Publicación traducida automáticamente

Artículo escrito por Pushpanjali chauhan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *