yzh52521/webman-aop 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

yzh52521/webman-aop

Composer 安装命令:

composer require yzh52521/webman-aop

包简介

aop aspect 切片 for the webman plugin

README 文档

README

composer require yzh52521/webman-aop

AOP 相关配置 config/plugin/yzh52521/aop/app.php 配置

<?php
return [
    'aspect' => [
        \app\aspect\UserAspect::class,
    ],
];

首先让我们编写待切入类

<?php
namespace app\service;

class UserService
{
    public function info()
    {
        echo 'UserService info' . PHP_EOL;
    }
}

其次新增对应的 UserAspect


namespace app\aspect;

use app\service\UserService;
use yzh52521\aop\Aop\AbstractAspect;
use yzh52521\aop\Aop\interfaces\ProceedingJoinPointInterface;

/**
 * Class UserAspect
 * @package app\aspect
 */
class UserAspect extends AbstractAspect
{
    public $classes = [
        UserService::class . '::info',
    ];

    /**
     * @param ProceedingJoinPointInterface $entryClass
     * @return mixed
     */
    public function process(ProceedingJoinPointInterface $entryClass)
    {
        var_dump('UserAspect before');
        $res = $entryClass->process();
        var_dump('UserAspect after');
        return $res;
    }
}

测试,在app\controller\Index 修改代码 eg:


    public function index()
    {
        /** @var UserService $userService */
        $userService = load(UserService::class);
        $userService->info();
    }

php start.php start, 命令行输出结果:

UserAspect before 
UserService info
UserAspect after 

#切入顺序 如果有多个切面类对同一个类方法进行切入, 会按照配置文件中顺序执行

容器 load 函数在 helpers.php 定义如下 eg:

/**
 *  加载容器的对象
 */
if (! function_exists('load')) {
    function load(string $class)
    {
        return \support\Container::get($class);
    }
}

统计信息

  • 总下载量: 67
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 2
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 2
  • Watchers: 1
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2021-12-27

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固