Ver Mensaje Individual
  #3 (permalink)  
Antiguo 12/10/2008, 07:53
Keysher
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Respuesta: Saber qué variables se cargan al jacer un require()

He estado probando con get_defined_vars. Si lo llamas dentro de una función, clase, método, etc... sólo devuelve las variables que afecten a dicho entorno (cosa que no hace el get_defined_constants, no sé por qué).

El caso es que eso me viene perfecto. Lo he dejado así:

Dentro de una clase:

Código php:
Ver original
  1. private function loadFile($auxPath) {
  2.     require_once($auxPath);
  3.     $this->strings = array();
  4.     $definedVars = get_defined_vars();
  5.     foreach ($definedVars as $key => $value) {
  6.             $this->strings[$key] = $value;         
  7.     }
  8. }

Se podría meter un if para que ignorase $auxPath, que también estaría dentro de $definedVars. E incluso comprobar que $key tiene un nombre válido (por ejemplo si queremos que sólo se carguen las variables cuyo nombre empiece de una determinada forma.

Para meterlo en una función en vez de en un método de una clase, sería casi igual:

Código php:
Ver original
  1. function loadFile($auxPath) {
  2.     require_once($auxPath);
  3.     $strings = array();
  4.     $definedVars = get_defined_vars();
  5.     foreach ($definedVars as $key => $value) {
  6.             $strings[$key] = $value;           
  7.     }
  8.     return $strings;
  9. }


Creo que esto funcionaría más o menos bien. Por supuesto habría que controlar los errores que se pudieran producir... pero eso ya es otro tema.

Gracias y un saludo!