Laravelアスペクト指向パッケージ公開しました

Posted: 2015-10-26 01:01 |  laravel 
Laravelでアスペクトを利用できるパッケージが、
やっと公開しても良さそうな具合になりました

ytake/Laravel-Aspect

当初はgo!aop Frameworkを利用していましたが、
実際に自身の開発で利用している時に幾つか問題が出てきたため、go!aopは利用しないことにし、
AOPのFrameworkはRay.Aopへ入れ替え、使い勝手なども向上しました。

利用方法

インストールはcomposerです
   "require": {
    "php": ">=5.5.9",
    "laravel/framework": "5.1.*",
    "ytake/laravel-aspect": "~0.0"
  },

サービスプロバイダへの登録

二種類登録する形になっていますが、もしかすると変更するかもしません
'providers' => [
    // added AspectServiceProvider 
    \Ytake\LaravelAspect\AspectServiceProvider::class,
    // added Artisan Command
    \Ytake\LaravelAspect\ConsoleServiceProvider::class,
]

クラスファイルの設置

$ php artisan ytake:aspect-module-publish
上記のコマンドで、デフォルトで用意されたアスペクトモジュールクラスをアプリケーションディレクトリに設置します。
デフォルトではapp/Modulesディレクトリを作成して設置しますが、
任意のディレクトリや、psr-4に則った形でコマンドで指定できます。

設置されるのは
データベーストランザクションのTransactonalModule、
キャッシュ作成のCacheableModule、
キャッシュ削除のCacheEvictModule、
キャッシュ更新のCachePutModule
です。

それぞれのデフォルトアスペクトモジュールは、
利用するクラスを指定すると、そのクラス内のメソッドで動作します。
ポイントカットを任意で作成して利用することももちろんできます。
利用する場合は、アプリケーションのサービスプロバイダで次のように記述してください。
 
class AppServiceProvider extends ServiceProvider
{
    /**
     * @return void
     */
    public function boot()
    {
        /** @var \Ytake\LaravelAspect\AspectManager $aspect */
        $aspect = $this->app['aspect.manager'];
        $aspect->register(\App\Modules\CacheableModule::class);
    }

}
ここでは例としてAppServiceProviderを利用
次にCacheableModuleの$classesプロパティに利用するクラスを記述してください。
デフォルトで用意しているものはこれで動作させることができます。

テストの場合は、
テスト用のドライバーを用意していますので、
phpunit.xmlでASPECT_DRIVERにnoneを指定してください。
アスペクトの動作を停止させて、アプリケーションのテストが実行できます。

 

about ytake

執筆に参加しています


Laravel お役立ち情報

share



このエントリーをはてなブックマークに追加

Categories

laravel 45

DTM 0

music 0

PHP全般 31

0

JAPAN 1

WORLD 1

javascript 4

RDBMS 1

NoSQL 1

NewSQL 1

Recent Posts

Ad

comments powered by Disqus

GitHub

Social Links

Author


クリエイティブ・コモンズ・ライセンス
Yuuki Takezawa 作『Ytake Blog』はクリエイティブ・コモンズ 表示 - 非営利 4.0 国際 ライセンス で提供されています。

© ytake/comnect All Rights Reserved. 2014