session-interop/utils.arraysession

此包包含会话接口的实现

3.0.0 2016-12-29 17:38 UTC

This package is not auto-updated.

Last update: 2024-09-12 02:10:50 UTC


README

Build Status Coverage Status

数组会话

此包是 SessionInterface 的基本实现

安装

您可以通过 Composer 安装此包

composer require session-interop/utils.arraysession

该包遵循 SemVer 规范,并且不同版本之间将保持完全向后兼容。

可用

SessionArray.

SessionInterface 的实现。

方法

__construct(&$array, $prefix = "")

构建对象。对象将使用 $array 存储元素。它使用 $array 的引用,因此当您使用 set($key)remove($key) 时,$array 将被修改。如果提供了前缀,它将自动将所有 $key 前面加上前缀。

has($key)

验证 $key 是否存在于对象构建时注入的数组中。如果 key 不是一个字符串,则抛出异常。如果关联的值是 null,则该方法返回 true

get($key)

获取与 $key 关联的值。如果没有找到键或键不是字符串,则抛出异常。

set($key, $val)

将值 $val 设置在键 $key 上。如果键不是字符串,则抛出异常。

remove($key)

销毁 $key 上的元素

SessionException.

错误时使用的异常。如果键不是字符串,则抛出异常。

用法

编写使用会话接口的用户服务

UserService.php

namespace Usage;
use Interop\Session\SessionInterface;
class UserService {
      public function isConnected(SessionInterface $session) {
          if ($session->has("userId")) {
	     	   return true;
	        }
	       return false;
      }
      public function login(SessionInterface $session, $userId) {
        if ($this->isConnected($session)) {
          return false;
  	    }
  	    $session->set("userId", $userId);
  	    return true;
      }
      public function logoff(SessionInterface $session) {
        if ($this->isConnected($session)) {
	     	     $session->remove("userId");
		           return true;
	       }
	      return false;
      }
}

使用实现

Index.php

use Interop\Session\Utils\ArraySession\ArraySession;
use Usage\UserService;
require_once("vendor/autoload.php");

session_start();

$userId = 1;
$userService = new UserService();
$session = new ArraySession($_SESSION, "myprefix");

// Check if the user is connected

if ($userService->isConnected($session)) {
  // logoff the user
  $userService->logoff($session);
}
else {
  // login the user
  $userService->login($session, $userId);
}