请求上下文

    目录

    当前请求的上下文,请求结束时即销毁,可以操作容器或者存取自定义值。

    上下文中容器操作

    $object = \Imi\RequestContext::getBean('XXX');
    $object = \Imi\RequestContext::getServerBean('XXX');
    $object = \Imi\RequestContext::newInstance('XXX');
    
    $container = \Imi\RequestContext::getContainer();
    $object = $container->get('XXX');

    上下文中的数据存储

    获取上下文对象

    // @var ArrayObject $cxt
    $cxt = \Imi\RequestContext::getContext();

    在上下文中存取值

    \Imi\RequestContext::get('myKey', 'default');
    \Imi\RequestContext::set('myKey', '123456');
    \Imi\RequestContext::unset('myKey');

    批量在上下文中设置值

    \Imi\RequestContext::muiltiSet([
        'myKey1' => '123456',
        'myKey2' => '456789',
        'myKey3' => '123456',
    ]);

    在闭包中获取上下文操作并返回值

    // 返回`123`
    $result = \Imi\RequestContext::use(function (ArrayObject $cxt) {
        $cxt['myKey2'] = '789';
        unset($cxt['myKey3']);
    
        return '123';
    });

    执行一个闭包并再上下文中记住其返回值

    // 返回值`3`并写入上下文中存储
    $result = \Imi\RequestContext::remember('myKey3', function () {
        return 1 + 2;
    });