icehawk/session

IceHawk 框架的会话注册组件

v1.1.1 2016-10-06 23:25 UTC

This package is auto-updated.

Last update: 2024-09-22 05:13:20 UTC


README

Join the chat at https://gitter.im/icehawk/session Build Status Coverage Status Latest Stable Version Total Downloads Latest Unstable Version License phpstan enabled

IceHawk Framework

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();

贡献

欢迎贡献!请参阅我们的贡献指南