Аспектно-ориентированное программирование в CakeStack Overflow

Я новичок в CakePHP и пытаюсь использовать Go! АОП в моем тестовом приложении.

Даже если я последовал руководству и импортировал Go! добавив его в мой composer.json, кажется, что класс AspectKernel не найден.

<?php
// app/ApplicationAspectKernel.php

namespace Application;

use Go\Core\AspectKernel;
use Go\Core\AspectContainer;

/**
* Application Aspect Kernel
*/
class ApplicationAspectKernel extends AspectKernel
{
/**
* Configure an AspectContainer with advisors, aspects and pointcuts
*
* @param AspectContainer $container
*
* @return void
*/
protected function configureAop(AspectContainer $container)
{
$container->registerAspect(new MonitorAspect());
}
}

Ошибка: класс ‘Go \ Core \ AspectKernel’ не найден
Файл: /Applications/XAMPP/xamppfiles/htdocs/test/app/Application/ApplicationAspectKernel.php

Если есть кто-то, кто решил эту проблему раньше, я хотел бы услышать ваше мнение.

Вот мой composer.json «требуют» значения.

"require": {
"php": ">=5.3.0",
"ext-mcrypt": "*",
"goaop/framework": "dev-master"},

CakePHP, по-видимому, является довольно практичной средой для работы, и я хотел бы применить AOP там, чтобы устранить необходимость вручную помещать логи для начала и конца функций (для измерения производительности функций)

1

Решение

Похоже, что вы помещаете этот класс в / Applications / XAMPP / xamppfiles / htdocs / test / app (комментарий в первой строке) и вызываете приложение пространства имен, попробуйте использовать пространство имен приложения.

Я получил Go! работает над моим приложением.

В /webroot/index.php поместите это ниже заявление об использовании:

use App\ApplicationAspectKernel;
$aspect = ApplicationAspectKernel::getInstance();
$aspect->init(array(
'debug' => true, // use 'false' for production mode
'cacheDir'  => dirname(__DIR__).'/tmp/aop',
'includePaths' => [
dirname(__DIR__) . '/src'
]
));

Я должен игнорировать аннотации @triggers в ApplicationAspectKernel внутри метода configureAop:

protected function configureAop(AspectContainer $container) {
// use Doctrine\Common\Annotations\AnnotationReader;
AnnotationReader::addGlobalIgnoredName('triggers');
$container->registerAspect(new CacheAspect());
}
0

Другие решения

Других решений пока нет …