PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.13.4
GiveWP – Donation Plugin and Fundraising Platform v2.13.4
4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / Log / ValueObjects / Enum.php
give / src / Log / ValueObjects Last commit date
Enum.php 5 years ago EnumInterface.php 5 years ago LogCategory.php 5 years ago LogType.php 5 years ago
Enum.php
109 lines
1 <?php
2
3 namespace Give\Log\ValueObjects;
4
5 use Give\Framework\Exceptions\Primitives\InvalidArgumentException;
6 use ReflectionClass;
7 use ReflectionException;
8
9 /**
10 * Class ValueObject
11 * @package Give\Log\ValueObjects
12 *
13 * @since 2.10.0
14 */
15 abstract class Enum implements EnumInterface {
16 /**
17 * @var mixed
18 */
19 protected $value;
20
21 /**
22 * ValueObject constructor.
23 *
24 * @param mixed $value
25 */
26 public function __construct( $value ) {
27 if ( $value instanceof static ) {
28 $value = $value->getValue();
29 }
30
31 if ( ! self::isValid( $value ) ) {
32 throw new InvalidArgumentException(
33 sprintf( 'Invalid %s enumeration value provided %s', static::class, $value )
34 );
35 }
36
37 $this->value = strtoupper( $value );
38 }
39
40
41 /**
42 * Get an array of defined constants
43 *
44 * @return array
45 */
46 public static function getAll() {
47
48 static $constants = [];
49
50 if ( ! isset( $constants[ static::class ] ) ) {
51 try {
52 $reflection = new ReflectionClass( static::class );
53 $constants[ static::class ] = $reflection->getConstants();
54 } catch ( ReflectionException $exception ) {
55 return [];
56 }
57 }
58
59 return $constants[ static::class ];
60 }
61
62 /**
63 * @inheritDoc
64 */
65 public function getValue() {
66 $constants = self::getAll();
67
68 if ( isset( $constants[ $this->value ] ) ) {
69 return $constants[ $this->value ];
70 }
71
72 return null;
73 }
74
75 /**
76 * Check if value is valid
77 *
78 * @param string $value
79 * @return bool
80 */
81 public static function isValid( $value ) {
82 return array_key_exists(
83 strtoupper( $value ),
84 self::getAll()
85 );
86 }
87
88 /**
89 * @inheritDoc
90 */
91 public function equalsTo( $value ) {
92 return $value instanceof self && $this->getValue() === $value->getValue();
93 }
94
95 /**
96 * @param string $name
97 * @param array $args
98 *
99 * @return static
100 */
101 public static function __callStatic( $name, $args ) {
102 if ( self::isValid( $name ) ) {
103 return new static( $name );
104 }
105
106 throw new InvalidArgumentException( "Invalid argument, does not match constant {$name}" );
107 }
108 }
109