public function __call($name, $arguments)
{
// behaviors
foreach ($this->behaviors as $behavior) {
if (!method_exists($behavior, $name)) {
continue;
}
return call_user_func_array(array($behavior, $name), $arguments);
}
// adding event
if ('on' === substr($name, 0, 2)) {
// prepend event name to function args
$addListenerArguments = $arguments;
array_unshift($addListenerArguments, lcfirst(substr($name, 2)));
// add listener
call_user_func_array(array($this->eventDispatcher, 'addListener'), $addListenerArguments);
return $this;
}
// getter
if ('get' === strtolower(substr($name, 0, 3))) {
return $this->get(lcfirst(substr($name, 3)));
}
// setter
if ('set' === strtolower(substr($name, 0, 3)) && isset($arguments[0])) {
return $this->set(lcfirst(substr($name, 3)), $arguments[0]);
}
throw new Exception('Document has no method "' . $name . '"');
}