silverstripe-framework/control/injector/AopProxyService.php
Will Rossiter ddcfcf7bed Update @package, @subpackage labels
Cleanup of framework's use of @package and @subpackage labels and additional of labels for classes missing packages.

Moved all GridField related components to the one name.

Countless spelling fixes, grammar for other comments.

Link ClassName references in file headers.
2013-05-21 22:24:41 +12:00

39 lines
828 B
PHP

<?php
/**
* A class that proxies another, allowing various functionality to be
* injected.
*
* @package framework
* @subpackage injector
*/
class AopProxyService {
public $beforeCall = array();
public $afterCall = array();
public $proxied;
public function __call($method, $args) {
if (method_exists($this->proxied, $method)) {
$continue = true;
if (isset($this->beforeCall[$method])) {
$result = $this->beforeCall[$method]->beforeCall($this->proxied, $method, $args);
if ($result === false) {
$continue = false;
}
}
if ($continue) {
$result = call_user_func_array(array($this->proxied, $method), $args);
if (isset($this->afterCall[$method])) {
$this->afterCall[$method]->afterCall($this->proxied, $method, $args, $result);
}
return $result;
}
}
}
}