This repository was archived by the owner on Jun 11, 2020. It is now read-only.
File tree Expand file tree Collapse file tree 1 file changed +70
-0
lines changed Expand file tree Collapse file tree 1 file changed +70
-0
lines changed Original file line number Diff line number Diff line change 1+ <?php
2+ /**
3+ * Created by PhpStorm.
4+ * User: inhere
5+ * Date: 2018-01-30
6+ * Time: 14:56
7+ */
8+
9+ namespace MyLib \ObjUtil ;
10+
11+ /**
12+ * Class ObjectStorage
13+ * - 允许使用非对象作为key,会自动使用 \stdClass 转成对象
14+ * @package MyLib\ObjUtil
15+ */
16+ class ObjectStorage extends \SplObjectStorage
17+ {
18+ /**
19+ * @param mixed $key
20+ * @param null $data
21+ */
22+ public function attach ($ key , $ data = null )
23+ {
24+ if (!\is_object ($ key )) {
25+ $ raw = $ key ;
26+ $ key = new \stdClass ();
27+ $ key ->value = $ raw ;
28+ }
29+
30+ parent ::attach ($ key , $ data );
31+ }
32+
33+ /**
34+ * @param mixed $key
35+ */
36+ public function detach ($ key )
37+ {
38+ if (!\is_object ($ key )) {
39+ $ raw = $ key ;
40+ $ key = new \stdClass ();
41+ $ key ->value = $ raw ;
42+ }
43+
44+ parent ::detach ($ key );
45+ }
46+
47+ /**
48+ * @param mixed $key
49+ * @return bool
50+ */
51+ public function contains ($ key )
52+ {
53+ if (!\is_object ($ key )) {
54+ $ raw = $ key ;
55+ $ key = new \stdClass ();
56+ $ key ->value = $ raw ;
57+ }
58+
59+ return parent ::contains ($ key );
60+ }
61+
62+ /**
63+ * @param mixed $key
64+ * @return bool
65+ */
66+ public function has ($ key ): bool
67+ {
68+ return $ this ->contains ($ key );
69+ }
70+ }
You can’t perform that action at this time.
0 commit comments