function test_generacion_clase_archivo_con_codigo_previo() { $this->hijo = "hijo_codigo_previo"; $this->padre = "padre_hijo_codigo_previo"; $contenido = "<?php\n\t/*\n\t* \n\t*/\n\tclass clase_previa\n\t{\n\t\tfunction esta_es_una_funcion_previa()\n\t\t{\n\t\t\t//Esto trata de engañar al parser del archivo\n\t\t\t?><?php\n\t\t}\n\t}\n\n?>"; //Se crea el archivo del hijo $this->crear_archivo_hijo($contenido); //Se genera la subclase $archivo = new toba_archivo_php($this->path_hijo()); $padre = new toba_archivo_php($this->path_padre()); $clase = new toba_clase_php($this->hijo, $archivo, $this->padre, $this->path_padre()); $clase->set_meta_clase(new info_componente(array())); $clase->generar($this->generar_todo()); //Se incluyen y se verifica que funcionan correctamente $padre->incluir(); $archivo->incluir(); $clase = new ReflectionClass($this->hijo); $this->AssertEqual($this->hijo, $clase->getName()); }
function get_codigo_vista_previa() { $opciones = $this->get_opciones(); $metodos = $this->get_metodos_a_generar(); $archivo_php = new toba_archivo_php($this->get_path_archivo()); //-- Se va a modificar algo? if ($this->s__es_esclavo && (!empty($metodos) || $archivo_php->esta_vacio())) { if (!method_exists($this->controlador(), 'get_metaclase')) { throw new toba_error('No se invoco correctamente en el visor de archivos PHP'); } $clase_php = new toba_clase_php($archivo_php, $this->controlador()->get_metaclase()); $codigo = $clase_php->get_codigo($metodos, $opciones['incluir_comentarios'], $opciones['incluir_separadores']); $codigo = "\n" . $codigo . "\n"; return $codigo; } else { //-- Muestra el original if (file_exists($this->get_path_archivo())) { return file_get_contents($this->get_path_archivo()); } else { return ''; } } }
function evt__generar() { $opciones = $this->dep('ci_generacion')->get_opciones(); $metodos = $this->dep('ci_generacion')->get_metodos_a_generar(); $archivo_php = new toba_archivo_php($this->get_path_archivo()); $clase_php = new toba_clase_php($archivo_php, $this->get_metaclase()); $clase_php->generar($metodos, $opciones['incluir_comentarios'], $opciones['incluir_separadores']); $this->pantalla()->set_descripcion('Clase generada correctamente'); $this->dep('ci_generacion')->set_pantalla('pant_vista_previa'); //Resetea los métodos para que fuerze al usuario a elegir otros si quiere generar nuevamente la clase $this->dep('ci_generacion')->resetear_metodos(); }
function test_generacion_ei_filtro() { $nombre_clase = 'mi_ei_filtro'; $clase = new toba_clase_php($nombre_clase, '', 'toba_ei_filtro', 'nucleo/browser/clases/toba_ei_filtro.php'); $clase->set_objeto('toba_testing', '1330'); $codigo = $clase->generar_clase($this->generar_todo()); // highlight_string("<?php\n $codigo \n"); eval($codigo); $clase = new ReflectionClass($nombre_clase); //-- Asegura que se haya heredado el constructor $this->AssertEqual($clase->getConstructor()->getDeclaringClass(), $clase); $this->AssertEqual($clase->getMethod('mantener_estado_sesion')->getDeclaringClass(), $clase); }