Use an array that contains the object, and the method name:
$optionsArray['value'] = array_map(array($this, 'add_val'), array_chunk($drop_val, count($optionsArray['heading_x'])));
You do the same for most other functions that take in callbacks as parameters, like array_walk()
, call_user_func()
, call_user_func_array()
, and so on.
How does it work? Well, if you pass an array to the callback parameter, PHP does something similar to this (for array_map()
):
if (is_array($callback)) { // array($this, 'add_val')
if (is_object($callback[0])) {
$object = $callback[0]; // The object ($this)
$method = $callback[1]; // The object method name ('add_val')
foreach ($array as &$v) {
// This is how you call a variable object method in PHP
// You end up doing something like $this->add_val($v);
$v = $object->$method($v);
}
}
}
// ...
return $array;
Here you can see that PHP just loops through your array, calling the method on each value. Nothing complicated to it; again just basic object-oriented code.
This may or may not be how PHP does it internally, but conceptually it's the same.