Go! をセットアップしようとしています。Yii Framework アプリケーションを使用した AOP Php。
私は次のことをしました:
1-インストールされたGo! 次の行を composer.json に追加して、composer を使用する AOP Php を作成します。
"lisachenko/go-aop-php":"0.4.*"
2-このようなアプリケーションカーネルを追加
<?php
// app/ApplicationAspectKernel.php
require_once 'TestMonitorAspect.php';
use Aspect\TestMonitorAspect;
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 TestMonitorAspect());
}
}
3-TestMonitorAspect も追加しました。
<?php
// Aspect/MonitorAspect.php
namespace Aspect;
require_once realpath(__DIR__.'/../../vendor/lisachenko/go-aop-php/src/Go/Aop/Aspect.php');
use Go\Aop\Aspect;
use Go\Aop\Intercept\FieldAccess;
use Go\Aop\Intercept\MethodInvocation;
use Go\Lang\Annotation\After;
use Go\Lang\Annotation\Before;
use Go\Lang\Annotation\Around;
use Go\Lang\Annotation\Pointcut;
/**
* Monitor aspect
*/
class TestMonitorAspect implements Aspect
{
/**
* Method that will be called before real method
*
* @param MethodInvocation $invocation Invocation
* @Before("within(**)")
*/
public function beforeMethodExecution(MethodInvocation $invocation)
{
\Yii::trace(__CLASS__.'AOP Hello World','system.*');
}
}
?>
彼の yii-aspect github プロジェクト統合の例は Yii 2.0 用であるため、ApplicationAspectKernel の index.php 初期化の独自のバージョンを作成しました。
私がしたことは、Yii アプリの onBeginRequest で ApplicationAspectKernel を初期化し、アプリを実行する前に次のようにしました。
$app = Yii::createWebApplication($env->configWeb);
$app->onBeginRequest = function($event) {
include __DIR__ . '/protected/vendor/autoload.php'; // use composer
include __DIR__ . '/protected/vendor/lisachenko/go-aop-php/src/Go/Core/AspectKernel.php';
include __DIR__ . '/protected/extensions/go-aop-php/ApplicationAspectKernel.php';
// Initialize an application aspect container
$applicationAspectKernel = ApplicationAspectKernel::getInstance();
$applicationAspectKernel->init(array(
'debug' => true, // use 'false' for production mode
// Cache directory
'cacheDir' => null,
// Include paths restricts the directories where aspects should be applied, or empty for all source files
'includePaths' => array()
));
};
$app->run();
どの側面も機能させることができません。
これを解決する方法について誰かアイデアがありますか? ヘルプやガイダンスは大歓迎です。ありがとう!
私たちが相談したリソースは次のとおりです。