Hola a todos, estoy explorando el como crear un constructor en PHP que admita varios tipos de parametros
y sin tener en cuenta el orden de ellos cuando son enviados para crear las propiedades.
He visto soluciones de o bien con el método __clone o creando un método que segun el número de parámetros recividos mandaba a un constructor o a otro.
Eso esta bien pero siempre no puedes alterar el orden de los parámetros y poniendo null si un parámetro intermedio no quieres darle valor.
Yo he hecho esto que me parece una solución pero no me acaba de satisfacer del todo y a ver si alguién tiene otro modo de hacerlo.
<?php/* Created on : 20-mar-2016, 20:25:15 Author : carlos*/class Objeto{ private $id; private $nombre; private $email; /* function __construct($id, $nombre, $email) { $this->id = $id; $this->nombre = $nombre; $this->email = $email; } */ public function constructor($arrayPropiedades){ foreach ($arrayPropiedades as $key =>$value){ if(property_exists(__CLASS__, $key)){ $this->$key = $value; } else{ echo "No existe el atributo $var"; } } } public function __get($var){ if(property_exists(__CLASS__, $var)){ return $this->$var; } else { return null; } } //clase }//Esto es lo que no me gusta, //tener que instanciar un objeto vacío primero// para poder acceder al método.$obj = new Objeto(); $obj2 = $obj->constructor(array('id' => 1, 'nombre' => 'carlos'));//funcionaecho 'Id: '.$obj->id;echo "Nombre: ".$obj->nombre;
He intentado crear un método static para acceder a él mediante el nombre de la clase. Pero claro, entonces da error en el $this del método constructor().
¿Alguién tiene una solución mas #compiGoguy?