One day I'll have reliable access to PHP 5.3 and real anonymous functions. Alas, that day is still far off for me. Recently, however, I put together a few trivial functions to make using the old school create_function capability easier. Or, at least easier for quick one liners. I give you: fn1($code), fn2($code) and fn3($code).
A few sample uses:
$prefixed = array_map(fn1('return "x_" . strtoupper($x);'), $data); // [1] $mathed = array_reduce($values, fn2('return $x + sqrt($y);'), 0); // [2] $e = $do_encoding ? // [3] fn1('return mb_convert_encoding($x, "Windows-1251", "UTF-8");') : fn1('return $x;'); $texted = $e($a) . "//" . $e($b) . "//" . $e($c);
The third example is the most fun one, as it shows that functions can be sort-of treated as first class values.
The implementation of these functions couldn't be simpler:
function fn1($code) { return create_function('$x', $code); } function fn2($code) { return create_function('$x,$y', $code); } function fn3($code) { return create_function('$x,$y,$z', $code); }
As my freshman professor, Kulbir Arora once said: Be Pithy. I'm trying man, I'm trying.
No comments:
Post a Comment