MilkZoft / ZanPHP

ZanPHP is an agile Web application development framework written in PHP5 that uses different design patterns and best practices to create applications more quickly with good quality code.

Home Page:http://www.zanphp.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.