亚洲精品成人_精品成人一区_999视频在线播放_免费黄色在线_亚洲成人久久久_久久www免费视频

成員屬性注解

我們直接看以下示例:

UserService

<?php
namespace App\Service;

class UserService
{
    public function info()
    {
        var_dump("this is user info");
    }
}

Index 控制器類

<?php
namespace App\HttpController;

use App\Service\UserService;
use EasySwoole\HttpAnnotation\AnnotationController;
use EasySwoole\HttpAnnotation\Attributes\Property\Context;
use EasySwoole\HttpAnnotation\Attributes\Property\Di;
use EasySwoole\HttpAnnotation\Attributes\Property\Inject;

class Index12 extends AnnotationController
{
    #[Inject(object: new UserService())]
    protected ?UserService $param1;

    #[Di(key: 'param2Key')]
    protected ?UserService $param2;

    #[Context(key: 'param3Key')]
    protected ?UserService $param3;

    protected function onRequest(?string $action): ?bool
    {
        return parent::onRequest($action);
    }

    public function test()
    {
        $this->param1->info();
        $this->param2->info();
        $this->param3->info();
    }
}

如果想正常注入 param2param3 參數,我們可以在框架的全局 onRequest 事件中進行注入,如下:

<?php

namespace EasySwoole\EasySwoole;

use App\Service\UserService;
use EasySwoole\Component\Context\ContextManager;
use EasySwoole\Component\Di;
use EasySwoole\EasySwoole\AbstractInterface\Event;
use EasySwoole\EasySwoole\Swoole\EventRegister;
use EasySwoole\Http\Request;
use EasySwoole\Http\Response;

class EasySwooleEvent implements Event
{
    public static function initialize()
    {
        date_default_timezone_set('Asia/Shanghai');

        Di::getInstance()->set(SysConst::HTTP_GLOBAL_ON_REQUEST, function (Request $request, Response $response): bool {
            // 提前使用 Di 注冊 param2 參數
            Di::getInstance()->set('param2Key', UserService::class); // param2 參數也可在 bootstrap、initialize、mainServerCreate 等事件中提前注冊。

            // 提前使用 ContextManager 注冊 param3 參數
            ContextManager::getInstance()->set('param3Key', new UserService()); // param3 參數只可在全局 onRequest 事件中提前注冊。

            return true;
        });
    }

    public static function mainServerCreate(EventRegister $register)
    {

    }
}

Context 注解

Context 注解,完整命名空間是 \EasySwoole\HttpAnnotation\Attributes\Property\Context,用于在每次請求進來的時候,從上下文管理器中取數據,并賦值到對應的屬性中,以上等價于:

$this->param3 = \EasySwoole\Component\ContextManager::getInstance()->get('param3Key');

Di 注解

Di 注解,完整命名空間是 \EasySwoole\HttpAnnotation\Attributes\Property\Di,用于在每次請求進來的時候,從 IOC 中取數據,并賦值到對應的屬性中,以上等價于:

$this->param2 = \EasySwoole\Component\Di::getInstance()->get('param2Key');

Inject 注解

Inject注解,完整命令空間是 \EasySwoole\HttpAnnotation\Attributes\Property\Inject,可注入類并且傳入構造函數參數,以上等價于:

$this->param1 = new \App\Service\UserService(...$args)
主站蜘蛛池模板: 日本黄色三级网站 | 亚洲先锋影音 | av福利在线看 | 亚洲一区二区播放 | 天天爱综合网 | 欧美日韩中文字幕在线视频 | 日本一区二区三 | 在线精品免费观看一区 | 中文字幕播放 | 欧美两根一起进3p做受视频 | 欧美国产日韩在线视频 | 日韩一区二 | 久久久久久网址 | 成人免费视频视频在线观看 免费 | 视频福利在线 | 91视频精品 | 97一区二区国产 | 1级av| 日韩一级精品视频在线观看 | 色噜噜狠狠色综合中国 | 黄色av免费网站 | 欧美一级片网站 | 伊人久久电影网 | 久久精品久久久久久久久久16 | 一级全黄少妇性色生活片毛片 | 母亲2| 成人性生交大片费看中文 | 人人看人人艹 | 精品国产91久久久久久久妲己 | 亚洲视频在线观看视频 | 五月亚洲综合 | 夜夜爽久久精品9 | 丝袜塞逼| 久久91精品 | 一级大片一级一大片 | 影视一区 | 国产精品久久久久久吹潮 | 亚洲成人精品 | 朋友的妈妈 在线 | 国产视频一区二区三区在线 | 91精品国产高清久久久久久 |