会话

相关类

Helper/AppHelper

开始

通常,你把你的 Session 处理的相关动作放在一个单独的 SessionBusiness 里。 这个 SessionBusiness 有些特殊,调用 App 类的 Session 系列方法。以便于在不同环境中处理 不同的 session 。

异常处理也最好成弄 SessionException 。

例子:

  1. namespace UserSystemDemo\Service;
  2. use UserSystemDemo\Base\BaseService;
  3. use UserSystemDemo\Base\Helper\ServiceHelper as S;
  4. use UserSystemDemo\Base\App;
  5. class SessionBusiness extends BaseService
  6. {
  7. public function __construct()
  8. {
  9. App::session_start();
  10. }
  11. public function getCurrentUser()
  12. {
  13. $ret = App::SuperGloabl()->_SESSION['user'] ?? [];
  14. SessionBusinessException::ThrowOn(empty($ret), '请重新登录');
  15. return $ret;
  16. }
  17. public function setCurrentUser($user)
  18. {
  19. App::SuperGloabl()->_SESSION['user'] = $user;
  20. }
  21. }
  1. namespace UserSystemDemo\Service;
  2. use UserSystemDemo\Base\BaseException;
  3. class SessionBusinessException extends BaseException
  4. {
  5. //
  6. }

这个例子,在 controller 里调用 SessionBusiness::G()->getCurrentUser() 得到当前用户数据。

如果得不到,就抛出 SessionBusinessException 。

如果还有什么需要 Session 数据的地方,继续填充这个 Session 类,而不是到处直接使用 session 。

免得发生不知道这个 session 数据在哪里用的? 这样的疑问。