icehawk / session
IceHawk 框架的会话注册组件
v1.1.1
2016-10-06 23:25 UTC
Requires
- php: >=7.0
Requires (Dev)
- tm/tooly-composer-script: ^1.0
This package is auto-updated.
Last update: 2024-09-22 05:13:20 UTC
README
IceHawk\Session
IceHawk 框架的会话注册组件。
意图
此组件旨在封装全局变量 $_SESSION
,并允许通过显式定义的用户键、值和返回类型来访问值,因此声明为抽象。
此外,它提供了对所有、多个或单个键的数据映射器注册和接口,例如减少会话中存储的数据开销。
使用方法
扩展类 AbstractSession
<?php declare(strict_types=1); namespace MyVendor\MyProject; use IceHawk\Session\AbstractSession; final class Session extends AbstractSession { const KEY_SOME_STRING_VALUE = 'someStringValue'; public function getSomeStringValue() : string { return $this->get( self::KEY_SOME_STRING_VALUE ); } public function setSomeStringValue( string $value ) { $this->set( self::KEY_SOME_STRING_VALUE, $value ); } public function isSomeStringValueSet() : bool { return $this->isset( self::KEY_SOME_STRING_VALUE ); } public function unsetSomeStringValue() { $this->unset( self::KEY_SOME_STRING_VALUE ); } }
处理值
<?php declare(strict_types=1); namespace MyVendor\MyProject; $session = new Session( $_SESSION ); # Set $session->setSomeStringValue( 'Hello world' ); # Isset if ( $session->isSomeStringValueSet() ) { # Get $someString = $session->getSomeStringValue(); echo $someString . ' was set.'; } # Unset $session->unsetSomeStringValue();
数据映射
<?php declare(strict_types=1); namespace MyVendor\MyProject; use IceHawk\Session\Interfaces\MapsSessionData; # Create a data mapper class final class MyDataMapper implements MapsSessionData { public function toSessionData( $value ) { return base64_encode( $value ); } public function fromSessionData( $sessionData ) { return base64_decode( $sessionData ); } } $session = new Session( $_SESSION ); # Add the data mapper for all keys in the registry $session->addDataMapper( new MyDataMapper() ); # Add the data mapper for one specific key in the registry $session->addDataMapper( new MyDataMapper(), [Session::KEY_SOME_STRING_VALUE] ); # Add the data mapper for multiple keys in the registry $session->addDataMapper( new MyDataMapper(), [Session::KEY_SOME_STRING_VALUE, Session::KEY_SOME_OTHER_VALUE] );
- 当调用
AbstractSesion::set()
方法时,将调用数据映射器的toSessionData()
方法。 - 当调用
AbstractSesion::get()
方法时,将调用数据映射器的fromSessionData()
方法。
清除所有会话数据
<?php declare(strict_types=1); namespace MyVendor\MyProject; $session = new Session( $_SESSION ); # ... put some data to the session ... # Clear the session data $session->clear();
贡献
欢迎贡献!请参阅我们的贡献指南。