加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

php – 通过HTTP请求实例使用会话与使用Laravel中的全局会话帮助

发布时间:2020-12-14 19:48:59 所属栏目:大数据 来源:网络整理
导读:我找不到任何与两种类型的会话访问方法相关的信息. 来自HTTP请求实例的$request- session()和来自Laravel 5.3中的会话助手的session(). 是否有任何差异或何时使用? 使用P.H.P单元时如何向get controller方法发送get请求 public function testMyMethod(Reque
我找不到任何与两种类型的会话访问方法相关的信息.
来自HTTP请求实例的$request-> session()和来自Laravel 5.3中的会话助手的session().
是否有任何差异或何时使用?

使用P.H.P单元时如何向get controller方法发送get请求

public function testMyMethod(Request $request){
$userExist = $request->session()->exists('user_id');
}
Service Container是Laravel架构的核心.所有服务,组件和依赖项都在那里注册,您可以在需要时随时提出要求.

但是Laravel提供了不止一种“要求它”的方法.你有全局辅助函数,你有外观,你有方法签名中的组件实例的“正确”,“更纯”的注入.我认为Laravel哲学的一个重要部分是干净,简单,直观的API.在这种情况下,可以根据您的个人喜好来定义“清洁和简单”的内容,以及根据定义,您的风格与您的风格相匹配.

我知道在PHP社区中有关于哪种方法“最好”,外观一直存在争议的激烈辩论,传统的依赖注入OOP纯粹主义者说唯一正确的方法可能是用控制器方法签名注入对象……

最后,这些方法中的任何一种都只是从同一个服务容器包中抓取对象.它在性能方面没有区别(我打赌两个间接的函数调用不会达到你的性能)或其他方面.所以,更好地使用适合自己风格的东西.如果我在一个典型的控制器中,我个人也会进行“正确”的注入,但是如果它在其上下文中使代码更清晰,更易读,那么我可能会使用全局帮助器.

<?php

namespace AppHttpControllers;

use IlluminateContractsSessionSession;
use FacadesIlluminateContractsSessionSession as SessionRealTimeFacade;
use IlluminateHttpRequest;
use IlluminateSupportFacadesInput;
use IlluminateSupportFacadesRequest as RequestFacade;
use IlluminateSupportFacadesSession as SessionFacade;
use PHPUnitFrameworkAssert;

class TestController extends Controller
{
    public function sessionTest(Request $request,Session $session)
    {
        $options = [
            $request->session()->get('_token'),session()->get('_token'),session('_token'),$session->get('_token'),SessionFacade::get('_token'),SessionRealTimeFacade::get('_token'),app('session')->get('_token'),];

        array_reduce(
            $options,function ($one,$other) {
                Assert::assertEquals($one,$other);
                return $other;
            },array_shift($options)
        );

        return 'All tests passed!';
    }    
}

顺便说一句,你可以看到你有超过2个选项:)

当然,这不仅适用于会话,获取请求数据,获取数据库连接等等也是如此.

(另外,我认为你还没有5.3中的实时外观)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读