- array_map: documentation ( source)
- var_dump: documentation ( source)
- array_walk: documentation ( source)
<?php
$some_objects = [
new SomeClass(1), new SomeClass(2),
new SomeClass(3), new SomeClass(4),
];
$func = function(SomeClass $x) {
$x->some_function();
return $x;
};
array_walk($some_objects, $func);
var_dump($some_objects);
$mangled_result = array_map($func, $some_objects);
var_dump($mangled_result);
class SomeClass {
private $number;
public function __construct($number) {
$this->number = $number;
}
public function some_function() {
try {
throw new Exception();
}
catch (Exception $e) {
MANGLE_SOMEHOW($e->getTrace());
}
}
}
function MANGLE_SOMEHOW($trace) {
foreach ($trace as $i => $frame) {
if (isset($frame['args'])) {
foreach ($frame['args'] as $arg_index => $arg_value) {
// And here I was thinking this was a 'copy'???
$frame['args'][$arg_index] = $arg_value;
}
}
}
}