This repository was archived by the owner on Aug 13, 2023. It is now read-only.
File tree Expand file tree Collapse file tree 7 files changed +289
-4
lines changed
Expand file tree Collapse file tree 7 files changed +289
-4
lines changed Original file line number Diff line number Diff line change 11composer.phar
2+ composer.lock
23/vendor /
3-
4- # Commit your application's lock file http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file
5- # You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file
6- # composer.lock
4+ .idea /
Original file line number Diff line number Diff line change 1+ {
2+ "name" : " deimos/session" ,
3+ "description" : " Deimos Session." ,
4+ "keywords" : [
5+ " deimos" ,
6+ " session"
7+ ],
8+ "homepage" : " https://github.com/REZ1DENT3/DeimosSession" ,
9+ "license" : " MIT" ,
10+ "type" : " library" ,
11+ "authors" : [
12+ {
13+ "name" : " rez1dent3" ,
14+ "email" : " maksim.babichev95@gmail.com"
15+ }
16+ ],
17+ "require" : {
18+ "deimos/helper" : " ~0.3"
19+ },
20+ "require-dev" : {
21+ "phpunit/phpunit" : " ~5.7" ,
22+ "codeclimate/php-test-reporter" : " dev-master"
23+ },
24+ "autoload" : {
25+ "psr-4" : {
26+ "Deimos\\ " : " src/"
27+ }
28+ }
29+ }
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ include_once dirname (__DIR__ ) . '/vendor/autoload.php ' ;
4+
5+ $ builder = new Deimos \Builder \Builder ();
6+ $ session = new Deimos \Session \Session ($ builder );
7+
8+ var_dump ($ session ->hello );
9+
10+ $ session ->hello = 'привет ' ;
11+
12+ var_dump ($ session ->getRequired ('hello ' ));
13+ var_dump ($ session ->get ('world ' , 'мир ' ));
14+
15+ $ session ->remove ('hello ' );
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ namespace Deimos \Session ;
4+
5+ use Deimos \Builder \Builder ;
6+ use Deimos \Helper \Traits \Helper ;
7+ use Deimos \Session \Extensions \Variable ;
8+
9+ abstract class Extension
10+ {
11+
12+ use Helper;
13+ use Variable;
14+
15+ /**
16+ * Session constructor.
17+ *
18+ * @param Builder $builder
19+ */
20+ public function __construct (Builder $ builder )
21+ {
22+ $ this ->builder = $ builder ;
23+
24+ $ this ->init ();
25+ }
26+
27+ /**
28+ * @param string $name
29+ * @param mixed $value
30+ */
31+ public function set ($ name , $ value )
32+ {
33+ $ this ->object [$ name ] = $ value ;
34+ }
35+
36+ /**
37+ * @param string $name
38+ *
39+ * @return bool
40+ */
41+ public function remove ($ name )
42+ {
43+ if (isset ($ this ->{$ name }))
44+ {
45+ unset($ this ->object [$ name ]);
46+
47+ return true ;
48+ }
49+
50+ return false ;
51+ }
52+
53+ /**
54+ * remove all keys
55+ */
56+ public final function removeAll ()
57+ {
58+ foreach ($ this ->object () as $ name => &$ value )
59+ {
60+ $ this ->remove ($ name );
61+ }
62+ }
63+
64+ /**
65+ * @param string $name
66+ *
67+ * @return mixed
68+ */
69+ abstract public function __get ($ name );
70+
71+ /**
72+ * @param string $name
73+ *
74+ * @return bool
75+ */
76+ abstract public function __isset ($ name );
77+
78+ /**
79+ * @param string $name
80+ * @param mixed $value
81+ */
82+ abstract public function __set ($ name , $ value );
83+
84+ }
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ namespace Deimos \Session \Extensions ;
4+
5+ trait Flash
6+ {
7+
8+ /**
9+ * @param string $name
10+ * @param mixed $value
11+ *
12+ * @return mixed
13+ *
14+ * @throws \InvalidArgumentException
15+ */
16+ public function flash ($ name , $ value = null )
17+ {
18+ $ name .= 'DeimosFlash ' ;
19+
20+ if ($ value === null )
21+ {
22+ $ value = $ this ->get ($ name );
23+ $ this ->remove ($ name );
24+ }
25+ else
26+ {
27+ $ this ->set ($ name , $ value );
28+ }
29+
30+ return $ value ;
31+ }
32+
33+ }
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ namespace Deimos \Session \Extensions ;
4+
5+ trait Variable
6+ {
7+
8+ /**
9+ * @var array
10+ */
11+ private $ object ;
12+
13+ /**
14+ * @var bool
15+ */
16+ private $ init ;
17+
18+ /**
19+ * @return bool
20+ */
21+ private function init ()
22+ {
23+ if (!$ this ->init )
24+ {
25+ if ($ _SESSION === null )
26+ {
27+ global $ _SESSION ;
28+ }
29+
30+ $ this ->init = session_start ();
31+ $ this ->object = &$ _SESSION ;
32+ }
33+
34+ return !$ this ->init ;
35+ }
36+
37+ /**
38+ * @return array
39+ */
40+ protected function &object ()
41+ {
42+ return $ this ->object ;
43+ }
44+
45+ }
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ namespace Deimos \Session ;
4+
5+ use Deimos \Session \Extensions \Flash ;
6+
7+ class Session extends Extension
8+ {
9+
10+ use Flash;
11+
12+ /**
13+ * @param string $name
14+ * @param null $default
15+ *
16+ * @return mixed
17+ *
18+ * @throws \InvalidArgumentException
19+ */
20+ public function get ($ name , $ default = null )
21+ {
22+ return $ this ->helper ()->arr ()->get ($ this ->asArray (), $ name , $ default );
23+ }
24+
25+ /**
26+ * @param string $name
27+ *
28+ * @return mixed
29+ *
30+ * @throws \Deimos\Helper\Exceptions\ExceptionEmpty
31+ * @throws \InvalidArgumentException
32+ */
33+ public function getRequired ($ name )
34+ {
35+ return $ this ->helper ()->arr ()->getRequired ($ this ->asArray (), $ name );
36+ }
37+
38+ /**
39+ * Alias getRequired($name)
40+ *
41+ * @param string $name
42+ *
43+ * @return mixed
44+ *
45+ * @throws \InvalidArgumentException
46+ */
47+ public function __get ($ name )
48+ {
49+ return $ this ->get ($ name );
50+ }
51+
52+ /**
53+ * @param string $name
54+ * @param mixed $value
55+ */
56+ public function __set ($ name , $ value )
57+ {
58+ $ this ->set ($ name , $ value );
59+ }
60+
61+ /**
62+ * @param string $name
63+ *
64+ * @return bool
65+ *
66+ * @throws \InvalidArgumentException
67+ */
68+ public function __isset ($ name )
69+ {
70+ return $ this ->helper ()->arr ()->keyExists ($ this ->asArray (), $ name );
71+ }
72+
73+ /**
74+ * @return array
75+ */
76+ public function asArray ()
77+ {
78+ return $ this ->object () ?: [];
79+ }
80+
81+ }
You can’t perform that action at this time.
0 commit comments