我有一个相当典型的 PHP MVC 应用程序。我经常需要从 session 中获取数据,但我不确定是应该在 Controller 中还是在服务中执行此操作。
例如,如果请求到达 domain.com/user/edit
,我的 Controller 可以从 session 中获取当前用户并将其传递给服务,或者服务可以访问 session 本身.
如果我在服务中这样做,它会在服务层和 session 对象之间创建依赖关系。如果我在 Controller 中这样做,它会使 Controller 变得有点胖。
我知道这只是一个小问题,但我在 session 中存储了很多(小)变量,而且我的请求的参数处理本身就非常复杂。
谢谢!
最佳答案
简答:都不是。
现在有点孤独的解释......
从架构的角度来看, session 是一种存储形式。在 PHP 中,很容易操纵它实际是哪种存储类型。
MVC 中的服务是处理应用程序逻辑 的模型层的一部分。也就是说 - 它处理 domain objects 之间的交互和存储抽象(通常直接或间接实现为 data mappers )。
因此,您应该将$_SESSION
访问(也是初始化)抽象为某种SessionMapper
,它可以处理域对象的整体存储或仅存储来自这些域对象的特定参数。
并且由于 session (通常)是您执行中的单一结构,如果请求,您可以通过确保生成数据映射器的 Factory
仅创建所述 的一个实例来强制执行此操作>SessionMapper
.
服务仅使用此(通过工厂共享) session 映射器和 Controller 对此一无所知。
关于php - 我应该从我的 Controller 传递 session 数据,还是在服务层读取它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14950199/