1

我是 CakePHP 的新手,我正在尝试使用 Go!我的测试应用程序中的 AOP。

尽管我按照指南并导入了 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 来消除手动为函数的开始和结束放置日志的需要(以测量函数的性能)

4

1 回答 1

0

看起来您将此类放在 /Applications/XAMPP/xamppfiles/htdocs/test/app (第一行注释)中并且正在调用命名空间应用程序,尝试使用应用程序命名空间。

我得走了!在我的应用程序上工作。

在 /webroot/index.php 中,将以下内容放在 use 的声明中:

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'
    ]
));

我必须在 configureAop 方法中忽略 ApplicationAspectKernel 中的 @triggers 注释:

protected function configureAop(AspectContainer $container) {
    // use Doctrine\Common\Annotations\AnnotationReader;
    AnnotationReader::addGlobalIgnoredName('triggers');
    $container->registerAspect(new CacheAspect());
}
于 2017-05-26T10:54:18.353 回答