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 鈥渞asgos鈥 / 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.