A continuación te mostraré un ejemplo de cómo aplicar el principio SOLID en Laravel utilizando bloques de código. En este ejemplo, utilizaremos el principio de responsabilidad única (SRP) para separar la lógica de negocio de los controladores.
Supongamos que tenemos un controlador que maneja la creación de un nuevo usuario en nuestra aplicación. En este controlador, se está manejando la validación de los datos, la creación del usuario y el envío de un correo electrónico de bienvenida. Esto viola el principio SRP ya que el controlador está asumiendo demasiadas responsabilidades.
Para solucionar este problema, podemos crear una clase separada para manejar la creación de usuarios y otra clase para manejar el envío de correos electrónicos de bienvenida. Aquí está el código para las nuevas clases:
// UserCreator.php
class UserCreator
{
public function create(array $data)
{
// Aquí se maneja la creación del usuario
}
}
// WelcomeEmailSender.php
class WelcomeEmailSender
{
public function send(User $user)
{
// Aquí se maneja el envío del correo electrónico de bienvenida
}
}
Luego, podemos actualizar nuestro controlador para utilizar estas nuevas clases y eliminar la lógica de negocio que estábamos manejando antes:
class UserController extends Controller
{
public function store(Request $request, UserCreator $userCreator, WelcomeEmailSender $emailSender)
{
$data = $request->validate([
'name' => 'required|string|max:255',
'email' => 'required|string|email|unique:users,email|max:255',
'password' => 'required|string|min:8|confirmed',
]);
$user = $userCreator->create($data);
$emailSender->send($user);
return redirect()->route('home');
}
}
Al separar la lógica de negocio en clases separadas, estamos cumpliendo con el principio SRP y estamos haciendo que nuestro código sea más modular y fácil de mantener. Además, estamos haciendo que nuestro controlador sea más sencillo y fácil de entender.