1

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();

どの側面も機能させることができません。

これを解決する方法について誰かアイデアがありますか? ヘルプやガイダンスは大歓迎です。ありがとう!

私たちが相談したリソースは次のとおりです。

  1. http://go.aopphp.com/docs/
  2. https://github.com/lisachenko/go-aop-php
  3. https://github.com/lisachenko/yii-aspect
  4. http://net.tutsplus.com/tutorials/php/aspect-directional-programming-in-php-with-go/
4

1 に答える 1

1

https://github.com/lisachenko/yii-aspectリポジトリを再作成して、Yii と Go! AOP フレームワークを一緒に。チェックアウトしてください。

UPD1 : packagist には、yii-aspect プロジェクト用の 1 行のインストーラーもあります。

composer create-project lisachenko/yii-aspect --stability=dev

UPD2 : 構成に関する詳細なマニュアルは、私の記事Aspect-Oriented Programming With Yiiにもあります。

于 2013-09-26T19:51:22.710 に答える