Jimmy Buriticá Londoño
En el siguiente link pueden encontrar una explicación de los TRAITS https://platzi.com/tutoriales/1338-php/3216-traits/
Mariano Gastón Paduani
Gracias!
Aprende a estructurar un paquete de rating en Laravel con un service provider sólido, interfaces claras y testing confiable. Verás cómo limpiar el esqueleto del paquete, tipar eventos y traits con contratos, y validar todo con Orchestra Testbench. El resultado: un diseño consistente y fácil de mantener.
¿Qué es un service provider en Laravel y por qué es el centro del paquete?
El service provider es el punto central donde se registran bindings, listeners y migrations. Aquí se orquesta cómo se integra el paquete con la aplicación base, asegurando un ciclo de vida claro para cada componente.
¿Cómo organizar el código del paquete de rating?
¿Qué registran los service providers?
¿Cómo usar interfaces y traits para un rating consistente?
Para independizar el paquete de los modelos de la app principal, se crearon interfaces en la carpeta contracts. Esto permite tipar la lógica y evitar que se pasen modelos incorrectos.
¿Qué interfaces definen el contrato del rating?
¿Qué cambios se aplican en eventos y traits?
// Combina capacidades de calificar y ser calificado trait Rate { use CanBeRated, CanRate; }
¿Cómo usar la configuración para el modelo rating?
Se reemplazó la referencia directa al modelo por configuración, haciendo el paquete más flexible.
// Lee el modelo desde la configuración del paquete $model = config('rating.models.rating');
¿Cómo se configuró el testing con Orchestra Testbench?
Para validar el paquete sin una app Laravel completa se utilizó Orchestra Testbench. Esto permite cargar el service provider, setear configuración por defecto y preparar una base de datos en memoria para pruebas rápidas y aisladas.
¿Quieres aportar ideas o te quedó alguna duda sobre interfaces, traits o Testbench? Cuéntalo en los comentarios y seguimos la conversación.
Jimmy Buriticá Londoño
En el siguiente link pueden encontrar una explicación de los TRAITS https://platzi.com/tutoriales/1338-php/3216-traits/
Mariano Gastón Paduani
Gracias!
Rodrigo Ortega
Darío Rugerio
No encontré el repositorio del paquete Rating creo que era este pero se quedó con la versión inicial 😕
Mariano Gastón Paduani
Estaría bueno que en algún momento explique por que hace las cosas y no solo copie codigo.
Bryan Pourie
aqui les comparto el repo del paquete https://github.com/sojeda/rating
Jean Nuñez
Los traist son calse que las podemos usar donde las necesitemos
Jean Nuñez
Con los Service provider nos permite registrar binind, listener y migrations
Jean Nuñez
Con los services provider podemos personalisar estos servicios como lo queramos y donde nos haga falta
Qualifier.php
<?php namespace Laraveles\Contracts; interface Qualifier { public function ratings($model = null); public function hasRated(Rateable $model): bool; public function rate(Rateable $model, float $rating): bool; public function unrate(Rateable $model): bool; }
Rateable.php
<?php namespace Laraveles\Contracts; interface Rateable { public function averageRating(): float; public function getKey(); public function name(): string; public function qualifications(); public function hasRateBy(Qualifier $model): bool; }
Rating.php
<?php namespace Laraveles\Contracts; interface Rating extends Rateable, Qualifier { // }