case 'loggable':
$aspectName = 'Demo\\Aspect\\LoggingAspect';
$example = new LoggingDemo();
$example->execute('LoggingTask');
// Logging for dynamic methods
LoggingDemo::runByName('StaticTask');
// Logging for static methods
break;
case 'property-interceptor':
$aspectName = 'Demo\\Aspect\\PropertyInterceptorAspect';
$example = new PropertyDemo();
echo $example->publicProperty;
// Read public property
$example->publicProperty = 987;
// Write public property
$example->showProtected();
$example->setProtected(987);
break;
case 'dynamic-interceptor':
$aspectName = 'Demo\\Aspect\\DynamicMethodsAspect';
$example = new DynamicMethodsDemo();
$example->saveById(123);
// intercept magic dynamic method
$example->load(456);
// notice, that advice for this magic method is not called
DynamicMethodsDemo::find(array('id' => 124));
//intercept magic static method
break;
case 'function-interceptor':
$aspectName = 'Demo\\Aspect\\FunctionInterceptorAspect';
$example = new FunctionDemo();