No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Traits

21/22
Recursos

Aportes 6

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

Creo que a esta clase le faltó explicar cual es el verdadero objetivo de los traits. Los traits vienen a solucionar un problema de limitaciones de la herencia simple en php, es decir, solucionan el hecho de que una misma clase no puede heredar de dos clases padre. Con los traits podemos hacer uso de un conjunto de “rasgos” / métodos sobre varias clases independientes.

perrituu…

Los traits son bastante útiles, los eh utilizado por ejemplo en un service común que se pueda aplicar a diferentes entidades.

Mis apuntes de la clase:

Que es un trait

Es una plantilla de métodos que podemos usar en diferentes clases, este puede usarse en varias clases a la vez

Hay que tomar en cuenta que los métodos que definamos en esta plantilla deben poder ser utilizados para todas las clases en los que se vayan a implementar

La definición de un trait es exactamente igual que una clase, como estamos utilizando PSR-4 este debe tener el mismo nombre que el archivo.

// Pet.php

namespace App\Traits

trait Pet{
	public function play(){
		return "I'm playing";
	}
	public function sleep(){
		return "I'm sleeping";
	}
}

Hay que tener en cuenta que este Trait no se puede instanciar al igual que como se hace con una clase

Para la implementación se debe hacer la invocación mediante su namespace y colocar el nombre del trait dentro de la definición de la clase donde se va a utilizar haciendo uso de la palabra reservada “use”

//Michi.php

namespace App\Classes;

use App\Traits\Pet;

class Michi {

    use Pet;

    public function sayMeow() {
        return "Meow! 🐱";
    }

    public function scratch() {
        return "😾";
    }

}
//Perritu.php
namespace App\Classes;

use App\Traits\Pet;

class Perritu {

    use Pet;

    public function bark() {
        return "Woof! 🐶";
    }

    public function drool() {
        return "🐶💧";
    }
}
// index.php

require("vendor/autoload.php");

use App\Classes\Perritu;
use App\Classes\Michi;

$firulais = new Perritu();
$mrmichi = new Michi();

echo $firulais->bark() . "\n";
echo $firulais->play() . "\n";

echo $mrmichi->sayMeow() . "\n";
echo $mrmichi->sleep() . "\n";

Muy buena tu explicación y muy útiles son los traits, podés tener encapsuladas todas las clases de uso frecuente y llevarlas al proyecto que estés desarrollando.
¡¡¡Genial!!!

Muy claro el concepto.
.
Agragar que los metodos obtenidos desde un trait, pueden sobreescribir a los metodos heradados de una clase padre.