Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
100.00% |
8 / 8 |
|
100.00% |
2 / 2 |
CRAP | |
100.00% |
1 / 1 |
AbstractMemo | |
100.00% |
8 / 8 |
|
100.00% |
2 / 2 |
4 | |
100.00% |
1 / 1 |
set | |
100.00% |
7 / 7 |
|
100.00% |
1 / 1 |
3 | |||
get | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
condition | n/a |
0 / 0 |
n/a |
0 / 0 |
0 | |||||
typeName | n/a |
0 / 0 |
n/a |
0 / 0 |
0 |
1 | <?php |
2 | |
3 | /** |
4 | * @license MIT |
5 | * @author hazuki3417<hazuki3417@gmail.com> |
6 | * @copyright 2022 hazuki3417 all rights reserved. |
7 | */ |
8 | |
9 | namespace Selen\Data; |
10 | |
11 | /** |
12 | * 値を保持するクラス |
13 | */ |
14 | abstract class AbstractMemo implements MemoInterface |
15 | { |
16 | /** |
17 | * @var mixed 保持する値を格納する変数 |
18 | */ |
19 | protected $object; |
20 | |
21 | /** |
22 | * 保持する値を渡します |
23 | * |
24 | * @param mixed $object |
25 | * |
26 | * @return bool 値を保持した場合はtrueを、それ以外の場合はfalseを返します |
27 | * |
28 | * @throws \InvalidArgumentException 値の型が不正なときに発生します |
29 | */ |
30 | public function set($object): bool |
31 | { |
32 | $isExpectedType = Type::validate($object, $this->typeName()); |
33 | |
34 | if (!$isExpectedType) { |
35 | throw new \InvalidArgumentException('Invalid argument type.'); |
36 | } |
37 | |
38 | if ($this->condition($object)) { |
39 | $this->object = $object; |
40 | return true; |
41 | } |
42 | return false; |
43 | } |
44 | |
45 | /** |
46 | * 保持した値を取得します |
47 | * |
48 | * @return mixed 保持した値を返します |
49 | */ |
50 | public function get() |
51 | { |
52 | return $this->object; |
53 | } |
54 | |
55 | /** |
56 | * 値を保持する条件を満たしているか判定します |
57 | * |
58 | * @param mixed $object |
59 | * |
60 | * @return bool 条件に一致している場合はtrueを、それ以外の場合はfalseを返します |
61 | */ |
62 | abstract protected function condition($object): bool; |
63 | |
64 | /** |
65 | * 保持する値のデータ型を指定します |
66 | * |
67 | * @return string データ型の名称を返します |
68 | */ |
69 | abstract protected function typeName(): string; |
70 | } |