2013-12-05 02:21:31 +01:00
|
|
|
<?php
|
|
|
|
|
2016-08-19 00:51:35 +02:00
|
|
|
use SilverStripe\Core\Injector\AopProxyService;
|
|
|
|
use SilverStripe\Core\Injector\BeforeCallAspect;
|
|
|
|
use SilverStripe\Core\Injector\AfterCallAspect;
|
|
|
|
use SilverStripe\Dev\SapphireTest;
|
|
|
|
|
|
|
|
|
2013-12-05 02:21:31 +01:00
|
|
|
class ProxyTestObject {
|
|
|
|
public function myMethod() {
|
|
|
|
return 42;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class BeforeAfterCallTestAspect implements BeforeCallAspect, AfterCallAspect {
|
|
|
|
public $block = false;
|
2014-08-15 08:53:05 +02:00
|
|
|
|
2013-12-05 02:21:31 +01:00
|
|
|
public $called;
|
2014-08-15 08:53:05 +02:00
|
|
|
|
2013-12-05 02:21:31 +01:00
|
|
|
public $alternateReturn;
|
2014-08-15 08:53:05 +02:00
|
|
|
|
|
|
|
public $modifier;
|
2013-12-05 02:21:31 +01:00
|
|
|
|
|
|
|
public function beforeCall($proxied, $method, $args, &$alternateReturn) {
|
|
|
|
$this->called = $method;
|
2014-08-15 08:53:05 +02:00
|
|
|
|
2013-12-05 02:21:31 +01:00
|
|
|
if ($this->block) {
|
|
|
|
if ($this->alternateReturn) {
|
|
|
|
$alternateReturn = $this->alternateReturn;
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public function afterCall($proxied, $method, $args, $result) {
|
|
|
|
if ($this->modifier) {
|
|
|
|
$modifier = $this->modifier;
|
|
|
|
return $modifier($result);
|
|
|
|
}
|
|
|
|
}
|
2014-08-15 08:53:05 +02:00
|
|
|
}
|