Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
21 / 21
100.00% covered (success)
100.00%
18 / 18
CRAP
100.00% covered (success)
100.00%
1 / 1
OdanSession
100.00% covered (success)
100.00%
21 / 21
100.00% covered (success)
100.00%
18 / 18
19
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 start
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
2
 isStarted
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 get
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 set
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 all
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 has
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 delete
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 clear
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 replace
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 count
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 addFlashMessage
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getFlash
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 regenerateId
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 destroy
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getId
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getName
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 save
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3// ╔════════════════════════════════════════════════════════════╗
4// ║ MIT Licence (#Expat) - https://opensource.org/licenses/MIT ║
5// ║ Copyright 2026 Frederic Poeydomenge <dyno@phexium.com>     ║
6// ╚════════════════════════════════════════════════════════════╝
7
8declare(strict_types=1);
9
10namespace Phexium\Plugin\Session\Adapter;
11
12use Odan\Session\SessionInterface as OdanSessionInterface;
13use Odan\Session\SessionManagerInterface as OdanSessionManagerInterface;
14use Override;
15use Phexium\Plugin\Session\Port\FlashInterface;
16use Phexium\Plugin\Session\Port\SessionInterface;
17
18final readonly class OdanSession implements SessionInterface
19{
20    public function __construct(private OdanSessionInterface|OdanSessionManagerInterface $session) {}
21
22    #[Override]
23    public function start(): void
24    {
25        if ($this->isStarted()) {
26            return;
27        }
28
29        $this->session->start();
30    }
31
32    #[Override]
33    public function isStarted(): bool
34    {
35        return $this->session->isStarted();
36    }
37
38    #[Override]
39    public function get(string $key, mixed $default = null): mixed
40    {
41        return $this->session->get($key, $default);
42    }
43
44    #[Override]
45    public function set(string $key, mixed $value): void
46    {
47        $this->session->set($key, $value);
48    }
49
50    #[Override]
51    public function all(): array
52    {
53        return $this->session->all();
54    }
55
56    #[Override]
57    public function has(string $key): bool
58    {
59        return $this->session->has($key);
60    }
61
62    #[Override]
63    public function delete(string $key): void
64    {
65        $this->session->delete($key);
66    }
67
68    #[Override]
69    public function clear(): void
70    {
71        $this->session->clear();
72    }
73
74    #[Override]
75    public function replace(array $data): void
76    {
77        $this->session->clear();
78        $this->session->setValues($data);
79    }
80
81    #[Override]
82    public function count(): int
83    {
84        return count($this->session->all());
85    }
86
87    #[Override]
88    public function addFlashMessage(string $level, string $message): void
89    {
90        $this->session->getFlash()->add($level, $message);
91    }
92
93    #[Override]
94    public function getFlash(): FlashInterface
95    {
96        return new OdanFlash($this->session->getFlash());
97    }
98
99    #[Override]
100    public function regenerateId(): void
101    {
102        $this->session->regenerateId();
103    }
104
105    #[Override]
106    public function destroy(): void
107    {
108        $this->session->destroy();
109    }
110
111    #[Override]
112    public function getId(): string
113    {
114        return $this->session->getId();
115    }
116
117    #[Override]
118    public function getName(): string
119    {
120        return $this->session->getName();
121    }
122
123    #[Override]
124    public function save(): void
125    {
126        $this->session->save();
127    }
128}