国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

webman-aop 切片組件

yzh52521

aop使用教程

composer require yzh52521/webman-aop

在根目錄增加define.php

use yzh52521\aop\ClassLoader;

$appConfig = config('app');
if (isset($appConfig['default_timezone'])) {
    date_default_timezone_set($appConfig['default_timezone']);
}
//aop
ClassLoader::reload(config('aop'));
ClassLoader::init();

在start.php文件下引入 define.php

require_once __DIR__ . '/define.php';

增加 AOP 切片 相關(guān)配置 我們需要在 config 目錄下,增加 aop.php 配置

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

首先讓我們編寫待切入類

?php
namespace app\service;

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

其次新增對(duì)應(yīng)的 UserAspect

namespace app\aspect;

use app\service\UserService;
use yzh52521\aop\AbstractAspect;
use yzh52521\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;
    }
}

測(cè)試 在app\controller\Index控制器中代碼:

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

php start.php start, 命令行輸出結(jié)果:

UserAspect before 
UserService info
UserAspect after 

切入順序 如果有多個(gè)切面類對(duì)同一個(gè)類方法進(jìn)行切入, 會(huì)按照配置文件中順序執(zhí)行

容器 load 函數(shù)在 helpers.php 定義如下 :

/**
 *  加載容器的對(duì)象
 */
if (! function_exists('load')) {
    function load(string $class)
    {
        return \support\Container::instance()->get($class);
    }
}
3072 5 1
5個(gè)評(píng)論

Tinywan

又來(lái)一個(gè)AOP ? 為什么要在根目錄增加define.php

  • yzh52521 2022-01-04

    不增加也行
    在start.php 加上這兩句
    ClassLoader::reload(config('aop'));
    ClassLoader::init();

  • Tinywan 2022-01-04

    我是有強(qiáng)迫癥:不該框架的任何代碼。包括start.php,哈哈

walkor

非常感謝你的分享。
webman下個(gè)版本嘗試規(guī)范下組件,做到組件配置與項(xiàng)目配置隔離。并且自動(dòng)化安裝卸載。這樣就不會(huì)入侵項(xiàng)目的代碼了?,F(xiàn)在在測(cè)試,預(yù)計(jì)還有幾天發(fā)布。到時(shí)候可以按照規(guī)范弄下,就完美了。

Tinywan

寫成插件哦!

Ace華

我想問(wèn)一下 ,windows下能用嗎?

  • yzh52521 2023-03-21

    可以

  • Ace華 2023-03-23

    為什么github上的說(shuō)明和這個(gè)不一樣呢?以哪個(gè)為準(zhǔn)

gongaiorg

Fatal error: Uncaught Error: Call to undefined function yzh52521\aop\Aop\value() in saas\test\vendor\yzh52521\webman-aop\src\Aop\ProxyNodeVisitor.php:141
一直報(bào)錯(cuò),怎么處理啊,是沒(méi)有把文件上傳完整嗎?

  • 暫無(wú)評(píng)論
年代過(guò)于久遠(yuǎn),無(wú)法發(fā)表評(píng)論

yzh52521

2526
積分
0
獲贊數(shù)
0
粉絲數(shù)
2021-03-12 加入
??