yii-goaop - 将 goaop 集成到 Yii,在 Yii 中优雅的面向切面编程 [ 2.0 版本 ]
yii-goaop - 将 goaop/framework 集成到 Yii,在 Yii 中优雅的面向切面编程。
项目地址
环境要求
- Yii >= 2.0
安装
$ composer require guanguans/yii-goaop -vvv
composer.json
add:
"autoload": {
"psr-4": {
"backend\\": "backend/",
"frontend\\": "frontend/",
"common\\": "common/",
"console\\": "console/",
"app\\": ""
}
}
$ composer dumpautoload
配置
yii2-app-advanced
配置 config/main.php
文件中添加:
<?php
return [
'bootstrap' => [
'aop',
],
'components' => [
'aop' => [
'class' => 'Guanguans\YiiGoAop\GoAopComponent',
'initOption' => [
// AOP Debug Mode
'debug' => false,
// Application Root Directory
'appDir' => dirname(dirname(__DIR__)),
// AOP Cache Directory
'cacheDir' => dirname(__DIR__).'/runtime/aspect',
// Cache File Mode
'cacheFileMode' => 511,
// Miscellaneous AOP Engine Features
'features' => 0,
// Directories White List
'includePaths' => [
dirname(__DIR__),
],
// Directories Black List
'excludePaths' => [
dirname(__DIR__).'/runtime',
dirname(__DIR__).'/tests',
dirname(__DIR__).'/views',
],
// AOP Container
'containerClass' => \Go\Core\GoAspectContainer::class,
],
// Yours aspects
'aspects' => [
frontend\aspects\LoggingAspect::class,
],
],
]
];
yii2-app-basic
配置 config/web.php
文件中添加:
return [
'bootstrap' => [
'aop',
],
'components' => [
'aop' => [
'class' => 'Guanguans\YiiGoAop\GoAopComponent',
'initOption' => [
// AOP Debug Mode
'debug' => false,
// Application Root Directory
'appDir' => dirname(dirname(__DIR__)),
// AOP Cache Directory
'cacheDir' => dirname(__DIR__).'/runtime/aspect',
// Cache File Mode
'cacheFileMode' => 511,
// Miscellaneous AOP Engine Features
'features' => 0,
// Directories White List
'includePaths' => [
dirname(__DIR__).'/assets',
dirname(__DIR__).'/aspects',
dirname(__DIR__).'/commands',
dirname(__DIR__).'/controllers',
dirname(__DIR__).'/models',
dirname(__DIR__).'/widgets',
],
// Directories Black List
'excludePaths' => [
dirname(__DIR__).'/config',
dirname(__DIR__).'/mail',
dirname(__DIR__).'/runtime',
dirname(__DIR__).'/tests',
dirname(__DIR__).'/vagrant',
dirname(__DIR__).'/vendor',
dirname(__DIR__).'/views',
dirname(__DIR__).'/web',
],
// AOP Container
'containerClass' => \Go\Core\GoAspectContainer::class,
],
// Yours aspects
'aspects' => [
app\aspects\LoggingAspect::class,
],
],
]
];
使用示例
创建切面 public frontend\controllers\SiteController->*Index(*)
<?php
namespace frontend\aspects;
use Go\Aop\Aspect;
use Go\Aop\Intercept\MethodInvocation;
use Go\Lang\Annotation\Before;
use Go\Lang\Annotation\After;
use Yii;
class LoggingAspect implements Aspect
{
/**
* Method that will be called before real method
* @param MethodInvocation $invocation Invocation
* @Before("execution(public frontend\controllers\SiteController->*Index(*))")
*/
public function beforeMethodExecution(MethodInvocation $invocation)
{
file_put_contents(Yii::$app->getRuntimePath().'/logs/logging.log', 'this is a before method testing.'.PHP_EOL, FILE_APPEND);
}
/**
* Method that will be called after real method
* @param MethodInvocation $invocation Invocation
* @After("execution(public frontend\controllers\SiteController->*Index(*))")
*/
public function afterMethodExecution(MethodInvocation $invocation)
{
file_put_contents(Yii::$app->getRuntimePath().'/logs/logging.log', 'this is a after method testing.'.PHP_EOL, FILE_APPEND);
}
}
运行访问 http://localhost:8888/index.php?r=site/index
cat frontend/runtime/logs/logging.log
───────┬───────────────────────────────────────────────────────────────────
│ File: frontend/runtime/logs/logging.log
───────┼───────────────────────────────────────────────────────────────────
1 │ this is a before method testing.
2 │ this is a after method testing.
───────┴───────────────────────────────────────────────────────────────────
相关链接
guanguans
注册时间:2017-12-11
最后登录:21小时前
在线时长:9小时2分
最后登录:21小时前
在线时长:9小时2分
- 粉丝4
- 金钱75
- 威望60
- 积分765
热门源码
- 基于 Yii 2 + Bootstrap 3 搭建一套后台管理系统 CMF
- 整合完 yii2-rbac+yii2-admin+adminlte 等库的基础开发后台源码
- 适合初学者学习的一款通用的管理后台
- yii-goaop - 将 goaop 集成到 Yii,在 Yii 中优雅的面向切面编程
- yii-log-target - 监控系统异常且多渠道发送异常信息通知
- 店滴云1.3.0
- 面向对象的一小步:添加 ActiveRecord 的 Scope 功能
- Yii2 开源商城 FecShop
- 基于 Yii2 开发的多店铺商城系统,免费开源 + 适合二开
- leadshop - 基于 Yii2 开发的一款免费开源且支持商业使用的商城管理系统
共 1 条评论
欢迎使用店滴 cms(ddiot)
店滴云,让经营场所,更智能。围绕茶室、酒店、健身房、公寓、出租房等经营性场所进行物联网改造。同时支持多种物联网通信协议,开放智能门锁,智能开关,智能手环的sdk供开发者使用。
官方地址
店滴云官网
官方开源库
cms源码
开发者参与
qq群
:823429313,点击可直接加入:开发者交流群
微信公众号
特性
环境准备:
php>=7.3 redis git 工具下载:https://git-scm.com/downloads composer https://www.phpcomposer.com/ composer建议使用阿里镜像 https://developer.aliyun.com/composer
第一步:git 下载代码
git clone https://toscode.gitee.com/wayfirer/ddicms.git
第二步:更新 composer 扩展
cd 你的文件路径 composer update
第三步:建立数据库并完成配置
cd common\config vim common\config\main-local.php
<?php /** * @Author: Wang Chunsheng 2192138785@qq.com * @Date: 2020-03-12 20:12:31 * @Last Modified by: Wang chunsheng email:2192138785@qq.com * @Last Modified time: 2021-04-09 18:25:50 */ return [ 'components' => [ 'db' => [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=netos', 'username' => 'root', 'password' => 'root', 'charset' => 'utf8', 'attributes' => [ PDO::ATTR_STRINGIFY_FETCHES => false, PDO::ATTR_EMULATE_PREPARES => false, ], ], 'mailer' => [ 'class' => 'yii\swiftmailer\Mailer', 'viewPath' => '@common/mail', // send all mails to a file by default. You have to set // 'useFileTransport' to false and configure a transport // for the mailer to send real emails. 'useFileTransport' => true, ], ], 'language' => 'zh-CN', ]; make distclean phpize && \ ./configure --with-php-config=/www/server/php/74/bin/php-config \ --enable-openssl \ --with-openssl-dir \ --enable-swoole-curl \ --enable-http2 && \ make && sudo make install
Nginx 部署配置
首先解析网站到 frontend\web,然后配置 nginx 如下:
server { listen 80; server_name www.ai.com; root "*/firetech/frontend"; add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Headers X-Requested-With,Authorization,Content-Type,access-token,bloc-id,store-id; add_header Access-Control-Allow-Methods GET,POST,OPTIONS,DELETE,PUT; location /api { index index.php index.html; if (!-e $request_filename) { rewrite ^/api/(.*)$ /api/index.php last; } if (!-f $request_filename){ set $rule_0 1$rule_0; } } location /admin { index index.php index.html; if (!-e $request_filename) { rewrite ^/admin/(.*)$ /admin/index.php last; } } location / { proxy_http_version 1.1; proxy_set_header Connection "keep-alive"; proxy_set_header X-Real-IP $remote_addr; proxy_set_header SERVER_NAME $server_name; if (!-e $request_filename) { proxy_pass http://127.0.0.1:9501; } } }
特别鸣谢
感谢以下的项目,排名不分先后
Yii:http://www.yiiframework.com
EasyWechat:https://www.easywechat.com
AdminLTE:https://adminlte.io
Vue: https://vuejs.org/
vue-ele-form: https://github.com/dream2023/vue-ele-form
element-ui: https://element.eleme.cn/
百度ai:https://ai.baidu.com/