case 'fluent-interface':
$aspectName = 'Demo\\Aspect\\FluentInterfaceAspect';
$example = new UserFluentDemo();
// Original class doesn't provide fluent interface for us
if ($example instanceof \Go\Aop\Proxy) {
// This check is to prevent fatal errors when AOP is disabled
$example->setName('John')->setSurname('Doe')->setPassword('root');
} else {
echo "Fluent interface is not available without AOP", PHP_EOL;
}
break;
case 'human-advices':
$aspectName = 'Demo\\Aspect\\HealthyLiveAspect';
$example = new HumanDemo();
echo "Want to eat something, let's have a breakfast!", PHP_EOL;
$example->eat();
echo "I should work to earn some money", PHP_EOL;
$example->work();
echo "It was a nice day, go to bed", PHP_EOL;
$example->sleep();
break;
case 'dynamic-traits':
$aspectName = 'Demo\\Aspect\\IntroductionAspect';
$example = new IntroductionDemo();
// Original class doesn't implement Serializable
$example->testSerializable();
break;
case 'declare-errors':
$aspectName = 'Demo\\Aspect\\DeclareErrorAspect';
$example = new ErrorDemo();
$example->oldMethod();