php bind variable al scope de la función en PHP antiguo

Me gustaría vincular una variable al scope de una función, puedo hacer esto en php usar la palabra clave ‘use’ después de PHP 5.3, sin embargo, ¿cómo hago el equivalente en las versiones <PHP 5.3?

   test_use_keyword ();
   function test_use_keyword () {
     $ test = 2;
     $ res = array_map (
       función ($ el) use ($ test) {
         devolver $ el * $ test;
       }, 
       array (3)
     );
     print_r ($ res); 
   }

Puede usar una variable global, pero siempre debe evitar las variables globales siempre que sea posible. Como sugerencia, sin saber, lo que estás tratando de resolver con esto

class Xy ( { private $test; public function __construct ($test) { $this->test = $test; } public function call ($el) { return $el * $this->test; } } print_r(array_map(array(new Xy(2), 'call'), array(3)); 

También son posibles las buenas y viejas lambdas

 $test = 2; $a = create_function ('$el', 'return $el * ' . $test . ';'); print_r (array_map($a, array(3))); 

Normalmente a través de globales, en serio. Aunque los hacks se pueden usar para imitar la funcionalidad, como funciones parciales en php . Extraído del artículo:

 function partial() { if(!class_exists('partial')) { class partial{ var $values = array(); var $func; function partial($func, $args) { $this->values = $args; $this->func = $func; } function method() { $args = func_get_args(); return call_user_func_array($this->func, array_merge($args, $this->values)); } } } //assume $0 is funcname, $1-$x is partial values $args = func_get_args(); $func = $args[0]; $p = new partial($func, array_slice($args,1)); return array($p, 'method'); } 

Y solo después de eso podrías tener algo así.

 function multiply_by($base, $value) { return $base * $value; } // ... $res = array_map(partial("multiply_by", $test), array(3)); 

No vale la pena.