Cargando

Utilizar una variable para instanciar una clase



  •   Responder

Pulsa corazón para recibir avisos de nuevas Respuestas

  AUTOR PREGUNTA

Publicado 08 noviembre 2018 - 21:52

Buenas comunidad, queria consultar acerca de un tema que no se si es posible, resulta que estoy creando una funcion que me permita instanciar de manera dinamica en este caso modelos de eloquent en laravel para ello le mando en parametros lo que quiero realizar, ejemplo

public function update($id, $data, $table){
   return $table::find($id)->update($data);
}

lo que quiero es que el return actue como lo siguiente

return User::find($id)->update($data);

donde User puede ser cualquier modelo de eloquent 

 

Gracias de antemano por su respuesta


  • 4 personas más tuvieron esta duda Yo también
  • Volver arriba

 

Publicado 12 noviembre 2018 - 23:53
Hola lxelvix, creo que esto te interesa:

Por favor Identificate o Registrate para poder ver este contenido



Instancia de clases PHP que seguro te interesarán. Si has encontrado nuevas formas de hacerlo compártelo que tu caso también me interesa.

   AUTOR PREGUNTA

Publicado 13 noviembre 2018 - 15:30

Gracias a todos. 

Encontré la respuesta, después de analizar todos los errores que arrojaban muchos casos de prueba. Al fin conseguí la funcionalidad que deseaba y comparto con ustedes, si alguien mas se encuentra en el mismo problema.

 

Solución: 

 

 

  1. public function update($id, $data, $table){
  2. return $table::find($id)->update($data);
  3. }

 

En la función agregue las siguientes lineas de código

         $instancia = trim("App\Entities\ ").$table;
         $obj=new $instancia;
         return $obj::find($id);

*Donde ("App\Entities\ ") es la ubicación del modelo a referenciar, notese que hay un espacio, es porque en laravel el backslash(/) lo trata de diferente manera al lado de un carácter especial. El trim es para eliminar ese espacio en blanco y concatenarlo con la variable donde esta el nombre de la tabla, por lo demás ya se puede manejar de manera dinámica la instanciacion de un modelo.

 

Es la manera en la cual logre solucionar. Espero que les sirva, saludos!



 

Publicado 14 abril 2019 - 17:12

Genial! este artículo me sirvió de manera excelente, gracias por la ayuda y excelente investigación!




X