Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
10 / 10
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
TrueKeeper
100.00% covered (success)
100.00%
10 / 10
100.00% covered (success)
100.00%
2 / 2
6
100.00% covered (success)
100.00%
1 / 1
 __set
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
3
 __get
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
3
1<?php
2
3declare(strict_types=1);
4
5namespace PeServer\Core;
6
7use PeServer\Core\Throws\MagicPropertyException;
8
9/**
10 * 真の状態を保持する。
11 *
12 * 一度でも偽になったら真には復帰しない。
13 * 検証処理を連続で行うことを想定。
14 *
15 * MEMO:
16 *  $v &= true
17 *  $v &= false
18 *  ていうよくやるやつが動かんかってん
19 *
20 * @property bool $state 真偽値を何も考えずに代入する。取得した際に一度でも偽が代入されていれば偽になる。
21 * @property-read bool $latest 最終設定値。
22 */
23final class TrueKeeper
24{
25    #region variable
26
27    private bool $state = true;
28
29    private bool $latest = false;
30
31    #endregion
32
33    #region get/set
34
35    public function __set(string $name, bool $value): void
36    {
37        if ($name !== 'state') {
38            throw new MagicPropertyException($name);
39        }
40
41        $this->latest = $value;
42        if (!$value) {
43            $this->state = false;
44        }
45    }
46
47    public function __get(string $name): bool
48    {
49        if ($name === 'state') {
50            return $this->state;
51        }
52        if ($name === 'latest') {
53            return $this->latest;
54        }
55
56            throw new MagicPropertyException($name);
57    }
58
59    #endregion
60}