Skip to content

Commit 11205cb

Browse files
committed
add trait
1 parent c4faf97 commit 11205cb

File tree

3 files changed

+44
-1
lines changed

3 files changed

+44
-1
lines changed

composer.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@
2424
"src/FinishFunc.php",
2525
"src/FileLog.php",
2626
"src/Xml.php",
27-
"src/XmlDecodeFailException.php"
27+
"src/XmlDecodeFailException.php",
28+
"src/trait/"
2829
],
2930
"files" : [
3031
"src/XString.php",

src/trait/ExtraHandlerTrait.php

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?php
2+
trait ExtraHandlerTrait {
3+
public function getExtra(): object {
4+
return $this->extra ??= new \stdClass();
5+
}
6+
public function saveExtra(): void {
7+
$this->update([
8+
'extra' => $this->extra
9+
]);
10+
}
11+
}

src/trait/NamedEnumBackedTrait.php

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<?php
2+
trait NamedEnumBackedTrait {
3+
abstract public function getName(): string;
4+
public static function getNameMap(): array {
5+
static $name_map = null;
6+
if (! isset($name_map)) {
7+
$name_map = [];
8+
foreach (static::cases() as $status)
9+
$name_map[$status->value] = $status->getName();
10+
}
11+
return $name_map;
12+
}
13+
public static function getKeyNameObjectArray(): array {
14+
static $name_map_array = null;
15+
if (! isset($name_map_array)) {
16+
$name_map_array = [];
17+
foreach (static::cases() as $status)
18+
$name_map_array[] = $status->getKeyNameObject();
19+
}
20+
return $name_map_array;
21+
}
22+
public function getKeyNameObject(): object {
23+
$ob = new stdClass();
24+
$ob->name = $this->getName();
25+
$ob->key = $this->value;
26+
return $ob;
27+
}
28+
public function getKeyNamePairMap(): array {
29+
return [$this->value => $this->getName()];
30+
}
31+
}

0 commit comments

Comments
 (0)