五月天激情丁香,国产精品2019,国产成人精品亚洲2020,国产精品免费视频一区二区三区,开心久久婷婷综合中文字幕,天堂视频在线观看免费完整版

成員屬性注解

我們直接看以下示例:

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 參數(shù),我們可以在框架的全局 onRequest 事件中進(jìn)行注入,如下:

<?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 注冊(cè) param2 參數(shù)
            Di::getInstance()->set('param2Key', UserService::class); // param2 參數(shù)也可在 bootstrap、initialize、mainServerCreate 等事件中提前注冊(cè)。

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

            return true;
        });
    }

    public static function mainServerCreate(EventRegister $register)
    {

    }
}

Context 注解

Context 注解,完整命名空間是 \EasySwoole\HttpAnnotation\Attributes\Property\Context,用于在每次請(qǐng)求進(jìn)來(lái)的時(shí)候,從上下文管理器中取數(shù)據(jù),并賦值到對(duì)應(yīng)的屬性中,以上等價(jià)于:

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

Di 注解

Di 注解,完整命名空間是 \EasySwoole\HttpAnnotation\Attributes\Property\Di,用于在每次請(qǐng)求進(jìn)來(lái)的時(shí)候,從 IOC 中取數(shù)據(jù),并賦值到對(duì)應(yīng)的屬性中,以上等價(jià)于:

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

Inject 注解

Inject注解,完整命令空間是 \EasySwoole\HttpAnnotation\Attributes\Property\Inject,可注入類并且傳入構(gòu)造函數(shù)參數(shù),以上等價(jià)于:

$this->param1 = new \App\Service\UserService(...$args)
主站蜘蛛池模板: 久久亚洲欧美综合激情一区 | 欧美日韩a | 国产99久久久国产精品免费直播 | 国产大学生系列 | 久久99久久99精品免观看动漫 | 免费观看黄色小视频 | 亚洲天堂网在线观看视频 | 爱爱五月天| 久久国产精品免费视频 | 天堂69亚洲精品中文字幕 | 模特精品一区二区三区 | 黄色在线视频网址 | 五月婷婷中文 | 丁香花五月婷婷开心 | www.青草视频 | 99久久精品免费观看区一 | 免费视频国产 | 午夜国产在线 | 日本久久久久久久久久 | 男女羞羞视频网站 | 四虎影视884a精品国产古代 | 欧美成综合网网站 | 国产成人性毛片 | 国产真实自拍 | 四虎影院欧美 | 激情五月婷婷在线 | 五月婷网 | 久久久精品中文字幕 | 免费自拍偷拍视频 | 欧美影视一区二区三区 | 久久精品中文字幕不卡一二区 | 美日韩中文字幕 | 色综合91久久精品中文字幕 | 国产电影午夜成年免费视频 | 青草青青在线视频观看 | 精品视频二区 | 久久综合中文字幕一区二区 | 日本高清二区视频久二区 | 香蕉视频在线精品 | 看国产毛片 | 欧美高清强视频 |