Skip to content

DotKernel session component extending and customizing laminas-session

License

Notifications You must be signed in to change notification settings

dotkernel/dot-session

Repository files navigation

dot-session

Important

dot-session is a wrapper on top of laminas/laminas-session

Dynamic JSON Badge

OSS Lifecycle PHP from Packagist (specify version)

GitHub issues GitHub forks GitHub stars GitHub license

Build Static codecov

SymfonyInsight

DotKernel session component extending and customizing laminas-session

Installation

Run the following command in your project folder

    composer require dotkernel/dot-session

Configuration

Register SessionMiddleware in your application's pipeline by adding the following line to config/pipeline.php:

    $app->pipe(Dot\Session\SessionMiddleware::class);

Register dot-session's ConfigProvider in your application's configurations by adding the following line to config/config.php:

    \Dot\Session\ConfigProvider::class,

Usage

Basic usage to access and use the session object in your services:

Method #1 - Factory

Step 1: Create a factory that retrieves the SessionManger from the container

class ExampleFactory
{
    // code
    
    public function __invoke(ContainerInterface $container)
    {
        return new ExampleService(
            $container->get(SessionManager::class)
        )
    }
}

Register the factory in any mode you register factories on your project.

Step 2: Access through your Service

class ExampleService
{
    private SessionManager $session;
    
    public function __construct(SessionManager $session) 
    {
        $this->session = $session;
    }
    
     //your methods
}

Method #2 - Injection

If you use annotated injection you can inject the Session Manager in your services.

use Dot\AnnotatedServices\Annotation\Inject;
use Laminas\Session\SessionManager;

class ExampleService
{
    private SessionManager $session;
    
     /**
     * @Inject({SessionManager::class})
     */
    public function __construct(SessionManager $session) 
    {
        $this->session = $session;
    }
    
     //your methods
}