Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/02/2009, 15:06
Avatar de Nigthmare
Nigthmare
 
Fecha de Ingreso: diciembre-2006
Ubicación: /home/vsanchez
Mensajes: 38
Antigüedad: 17 años, 4 meses
Puntos: 0
¿Como lo harian?

Les explico el problema, estoy haciendo una especie de framework para migración de bases de datos, este framework migra bases de datos en textos plano y/o DBF, y dado que las personas pueden escribir funciones especiales argege un tag a los metadatos llamado php, aqui el usuario del framework pondra la sintaxis de la funcion que escribio para hacer acciones personales.

Dentro de una de las clases del framework las siguientes funciones son las encargadas de interpretar ese tag php:
Código:
private function phpAction($func){
$funcion =$this->getFunctionName($func);
if(function_exists($funcion)){
   $params = $this->getParamList($func);
   $eval ="call_user_func(\"".$funcion."\",".$params.");";
   $sql=",".eval($eval);
   return $sql;
}
}

private function getFunctionName($func){
  return substr($func,0,strpos($func,"("));
}

private function getParamList($func){
    $func=substr($func,strpos($func,"(")+1);
    $func=substr($func,0,strpos($func,")"));
    $func="\"".$func."\"";
    return $func;
}
Eso ya esta hecho y llama a las funciones que yo quiera y me comprueba si existen, el problema radica en que al llamar a eval este no retorna ningún valor; cuando el propio manual de PHP dice:

A partir de PHP 4, eval() devuelve NULL a menos que se llame return en el código evaluado, en cuyo caso el valor pasado a return es devuelto.

De antemano gracias

Última edición por Nigthmare; 08/02/2009 a las 15:25