¿Cómo llamar a un método de otro controlador en Laravel?

publicado por: Anonymous

Estoy intentando llamar un método de otro controller pero cuando hago la instancia me devuelve todo vacío, ¿cuál es el método correcto para hacerlo?

esto es lo que hago:

use AppHttpControllersOtroController;

class MiControllerextends Controller
{

 public function metodoMiController(Request $request){

    $objeto = new OtroController();
    $objeto = new metodoOtroController($parametro);

 }

}

La respuesta que obtengo es vacía.

solución

Hay muchas formas de hacer esto, sin embargo, llamar un método de otro controlador directamente es considerado una mala práctica y estás rompiendo varios principios de la programación orientada a objetos.

En general, si necesitas un método en más de un controlador, quiere decir que debes hacerlo reutilizable, por lo cual deberías utilizar herencia, o crear un trait e importarlo en los dos controladores, todo depende de la estructura de tu proyecto, incluso podrías hasta crear servicios, otras capas adicionales, etc.


En resumen, sugeriría que crees un trait y que lo utilices en ambos controladores:

class MiController extends Controller
{
    use MiTrait;

    // ...

 }
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *