Error al cargar clases con el metodo classes()
inkenrat opened this issue · comments
Error:
No se pueden pasar varios parametros al constructor de una clase.
Descripcion:
Cuando utilizo el metodo classes si paso varios valores en le arrary para asignarlos a varios parametros, me asigna los valores a un solo parametro (un string) y me los colca separados por comas (,) ejemplo:
Constructor de mi clase mi clase:
class MiClase extends ZP_Load {
public function __construct($param1, $param2) {
...
Carganod la clase con el metodo classes
$this->miClase = $this->classes("miclase", "MiClase", array('Valor1', 'Valor2'));
Al hacer un var_dump a los parametros de mi constructor me regresa lo siguiente:
____(array($param1, $param2));
Resultado:
array(2) {
[0]=>
string(14) "Valor1, Valor2"
[1]=>
NULL
}
Como lo resolvi:
Al revisar tus clases rastre el error hasta la clase singleton (archivo: zan/classes/singleton.php) en la linea 85 me di cuenta que pasa los parametros como una cadena ya que la colocas entre comillas dobles:
eval("self::$instances[$Class] = new $Class("$args");");
lo que hice fue pasar la asignacion de comillas a las lineas 73 y 75:
Original:
if($i === count($params) - 1) {
$args .= "$param";
} else {
$args .= "$param, ";
}
Modificado:
if($i === count($params) - 1) {
$args .= ""$param"";
} else {
$args .= ""$param", ";
}
Y ademas modifique la linea 85 para eliminar las comillas:
Original:
eval("self::$instances[$Class] = new $Class("$args");");
Modificado
eval("self::$instances[$Class] = new $Class($args);");
var_dump despues del cambio
____(array($param1, $param2));
Resultado:
array(2) {
[0]=>
string(6) "Valor1"
[1]=>
string(6) "Valor2"
}
Gracias por todo, espero que este bien mi modificacion, saludos.
Fixed