Skip to content

Commit 2eb24c6

Browse files
authored
Merge pull request #14 from wiz-develop/endou-mame/issue13
2 parents 1a4b2b5 + 495b2a2 commit 2eb24c6

File tree

12 files changed

+36
-23
lines changed

12 files changed

+36
-23
lines changed

src/Boolean/Base/BooleanValueBase.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,15 @@
55
namespace WizDevelop\PhpValueObject\Boolean\Base;
66

77
use Override;
8+
use Stringable;
89
use WizDevelop\PhpMonad\Result;
910
use WizDevelop\PhpValueObject\Error\ValueObjectError;
1011
use WizDevelop\PhpValueObject\IValueObject;
1112

1213
/**
1314
* 真偽値の値オブジェクトの基底クラス
1415
*/
15-
abstract readonly class BooleanValueBase implements IValueObject, IBooleanValueFactory
16+
abstract readonly class BooleanValueBase implements IValueObject, Stringable, IBooleanValueFactory
1617
{
1718
protected function __construct(public bool $value)
1819
{
@@ -22,7 +23,7 @@ protected function __construct(public bool $value)
2223
#[Override]
2324
final public function equals(IValueObject $other): bool
2425
{
25-
return (string)$this === (string)$other;
26+
return $this->value === $other->value;
2627
}
2728

2829
#[Override]

src/Collection/Base/CollectionBase.php

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
namespace WizDevelop\PhpValueObject\Collection\Base;
66

77
use Override;
8+
use Stringable;
89
use WizDevelop\PhpMonad\Result;
910
use WizDevelop\PhpValueObject\Error\ValueObjectError;
1011
use WizDevelop\PhpValueObject\IValueObject;
@@ -16,7 +17,7 @@
1617
* @template TKey
1718
* @template TValue
1819
*/
19-
abstract readonly class CollectionBase implements IValueObject
20+
abstract readonly class CollectionBase implements IValueObject, Stringable
2021
{
2122
final protected const int MIN_COUNT = 0;
2223
final protected const int MAX_COUNT = 99999999;
@@ -38,13 +39,16 @@ final public function equals(IValueObject $other): bool
3839
#[Override]
3940
final public function __toString(): string
4041
{
41-
return $this->jsonSerialize();
42+
return json_encode($this->jsonSerialize(), JSON_THROW_ON_ERROR);
4243
}
4344

45+
/**
46+
* @return array<TKey,TValue>
47+
*/
4448
#[Override]
45-
final public function jsonSerialize(): string
49+
final public function jsonSerialize(): array
4650
{
47-
return json_encode($this->elements, JSON_THROW_ON_ERROR);
51+
return $this->elements;
4852
}
4953

5054
/**

src/Collection/Pair.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
namespace WizDevelop\PhpValueObject\Collection;
66

7+
use Stringable;
78
use WizDevelop\PhpValueObject\IValueObject;
89
use WizDevelop\PhpValueObject\ValueObjectDefault;
910

@@ -13,7 +14,7 @@
1314
* @template TKey
1415
* @template TValue
1516
*/
16-
readonly class Pair implements IValueObject
17+
readonly class Pair implements IValueObject, Stringable
1718
{
1819
use ValueObjectDefault;
1920

src/DateTime/LocalDate.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use DateTimeInterface;
99
use DateTimeZone;
1010
use Override;
11+
use Stringable;
1112
use WizDevelop\PhpMonad\Option;
1213
use WizDevelop\PhpMonad\Result;
1314
use WizDevelop\PhpValueObject\Error\ValueObjectError;
@@ -18,7 +19,7 @@
1819
* ローカル日付を表す値オブジェクト
1920
*/
2021
#[ValueObjectMeta(displayName: 'ローカル日付')]
21-
readonly class LocalDate implements IValueObject
22+
readonly class LocalDate implements IValueObject, Stringable
2223
{
2324
/**
2425
* The minimum supported year for instances of `LocalDate`.

src/DateTime/LocalDateTime.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use DateTimeInterface;
99
use DateTimeZone;
1010
use Override;
11+
use Stringable;
1112
use WizDevelop\PhpMonad\Option;
1213
use WizDevelop\PhpMonad\Result;
1314
use WizDevelop\PhpValueObject\Error\ValueObjectError;
@@ -18,7 +19,7 @@
1819
* ローカル日時を表す値オブジェクト
1920
*/
2021
#[ValueObjectMeta(displayName: 'ローカル日時')]
21-
readonly class LocalDateTime implements IValueObject
22+
readonly class LocalDateTime implements IValueObject, Stringable
2223
{
2324
/**
2425
* Avoid new() operator.

src/DateTime/LocalTime.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use DateTimeInterface;
99
use DateTimeZone;
1010
use Override;
11+
use Stringable;
1112
use WizDevelop\PhpMonad\Option;
1213
use WizDevelop\PhpMonad\Result;
1314
use WizDevelop\PhpValueObject\Error\ValueObjectError;
@@ -18,7 +19,7 @@
1819
* ローカル時刻を表す値オブジェクト
1920
*/
2021
#[ValueObjectMeta(displayName: 'ローカル時刻')]
21-
readonly class LocalTime implements IValueObject
22+
readonly class LocalTime implements IValueObject, Stringable
2223
{
2324
final public const int MONTHS_PER_YEAR = 12;
2425
final public const int DAYS_PER_WEEK = 7;

src/Error/IErrorValue.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,13 @@
44

55
namespace WizDevelop\PhpValueObject\Error;
66

7+
use Stringable;
78
use WizDevelop\PhpValueObject\IValueObject;
89

910
/**
1011
* エラー値オブジェクト インターフェース
1112
*/
12-
interface IErrorValue extends IValueObject
13+
interface IErrorValue extends IValueObject, Stringable
1314
{
1415
/**
1516
* シリアライズする際の区切り文字列

src/IValueObject.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,12 @@
55
namespace WizDevelop\PhpValueObject;
66

77
use JsonSerializable;
8-
use Stringable;
98

109
/**
1110
* すべての値オブジェクトの基底インターフェース
1211
* @see WizDevelop\PhpValueObject\ValueObjectDefault
1312
*/
14-
interface IValueObject extends Stringable, JsonSerializable
13+
interface IValueObject extends JsonSerializable
1514
{
1615
/**
1716
* 値オブジェクトの等価性を比較する

src/Number/Decimal/DecimalValueBase.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,15 @@
66

77
use BcMath\Number;
88
use Override;
9+
use Stringable;
910
use WizDevelop\PhpMonad\Result;
1011
use WizDevelop\PhpValueObject\Error\ValueObjectError;
1112
use WizDevelop\PhpValueObject\IValueObject;
1213

1314
/**
1415
* 少数の値オブジェクトの基底クラス
1516
*/
16-
abstract readonly class DecimalValueBase implements IValueObject, IArithmetic, IComparison, IDecimalValueFactory
17+
abstract readonly class DecimalValueBase implements IValueObject, Stringable, IArithmetic, IComparison, IDecimalValueFactory
1718
{
1819
use Arithmetic;
1920
use Comparison;
@@ -35,7 +36,7 @@ protected function __construct(public Number $value)
3536
#[Override]
3637
final public function equals(IValueObject $other): bool
3738
{
38-
return (string)$this === (string)$other;
39+
return $this->value->compare($other->value) === 0;
3940
}
4041

4142
#[Override]
@@ -47,7 +48,7 @@ final public function __toString(): string
4748
#[Override]
4849
final public function jsonSerialize(): string
4950
{
50-
return (string)$this;
51+
return (string)$this->value;
5152
}
5253

5354
/**

src/Number/Integer/IntegerValueBase.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,15 @@
55
namespace WizDevelop\PhpValueObject\Number\Integer;
66

77
use Override;
8+
use Stringable;
89
use WizDevelop\PhpMonad\Result;
910
use WizDevelop\PhpValueObject\Error\ValueObjectError;
1011
use WizDevelop\PhpValueObject\IValueObject;
1112

1213
/**
1314
* 整数の値オブジェクトの基底クラス
1415
*/
15-
abstract readonly class IntegerValueBase implements IValueObject, IArithmetic, IComparison, IIntegerValueFactory
16+
abstract readonly class IntegerValueBase implements IValueObject, Stringable, IArithmetic, IComparison, IIntegerValueFactory
1617
{
1718
use Arithmetic;
1819
use Comparison;
@@ -31,7 +32,7 @@ protected function __construct(public int $value)
3132
#[Override]
3233
final public function equals(IValueObject $other): bool
3334
{
34-
return (string)$this === (string)$other;
35+
return $this->value === $other->value;
3536
}
3637

3738
#[Override]

src/String/Base/StringValueBase.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
namespace WizDevelop\PhpValueObject\String\Base;
66

77
use Override;
8+
use Stringable;
89
use WizDevelop\PhpMonad\Result;
910
use WizDevelop\PhpValueObject\Error\ValueObjectError;
1011
use WizDevelop\PhpValueObject\IValueObject;
@@ -14,7 +15,7 @@
1415
/**
1516
* 文字列の値オブジェクトの基底クラス
1617
*/
17-
abstract readonly class StringValueBase implements IValueObject, IStringValueFactory
18+
abstract readonly class StringValueBase implements IValueObject, Stringable, IStringValueFactory
1819
{
1920
final protected const int MIN_LENGTH = 1;
2021
final protected const int MAX_LENGTH = 4194303;
@@ -32,7 +33,7 @@ protected function __construct(public string $value)
3233
#[Override]
3334
final public function equals(IValueObject $other): bool
3435
{
35-
return (string)$this === (string)$other;
36+
return $this->value === $other->value;
3637
}
3738

3839
#[Override]
@@ -44,7 +45,7 @@ final public function __toString(): string
4445
#[Override]
4546
final public function jsonSerialize(): string
4647
{
47-
return (string)$this;
48+
return $this->value;
4849
}
4950

5051
/**

src/ValueObjectDefault.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@
77
use Override;
88

99
/**
10-
* Default implementation of IValueObject
11-
* @see IValueObject
10+
* Default implementation of IValueObject and Stringable.
11+
* @see WizDevelop\PhpValueObject\IValueObject
12+
* @see Stringable
1213
*/
1314
trait ValueObjectDefault
1415
{

0 commit comments

Comments
 (0)