Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
8 / 8
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
AbstractMemo
100.00% covered (success)
100.00%
8 / 8
100.00% covered (success)
100.00%
2 / 2
4
100.00% covered (success)
100.00%
1 / 1
 set
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
1 / 1
3
 get
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
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
9namespace Selen\Data;
10
11/**
12 * 値を保持するクラス
13 */
14abstract 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}