PHP code example of event-sourcery / event-sourcery
1. Go to this page and download the library: Download event-sourcery/event-sourcery library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
event-sourcery / event-sourcery example snippets
class PersonsName implements SerializableValue {
/** @var string */
public $firstName;
/** @var string */
public $lastName;
public function __construct(string $firstName, string $lastName) {
$this->firstName = $firstName;
$this->lastName = $lastName;
}
// Implemented from SerializableValue
public function serialize(): string {
return json_encode([
'firstName' => $this->firstName,
'lastName' => $this->lastName,
]);
}
// Implemented from SerializableValue
public static function deserialize($string) {
$values = json_decode($string);
return new static($values->firstName, $values->lastName);
}
}
class Email implements SerializablePersonalDataValue {
/** @var PersonalKey */
private $personalKey;
/** @var string */
private $address;
private function __construct(PersonalKey $personalKey, string $address) {
$this->personalKey = $personalKey;
$this->address = $address;
if ( ! filter_var($address, FILTER_VALIDATE_EMAIL)) {
throw new EmailAddressIsNotValid($address);
}
}
public static function fromString(PersonalKey $personalKey, string $address) {
return new static($personalKey, $address);
}
public function toString() {
if ($this->wasErased()) {
throw new CannotRetrieveErasedPersonalData();
}
return $this->address;
}
// for serialization
public function serialize(): string {
return json_encode([
'personalKey' => $this->personalKey->toString(),
'address' => $this->address,
]);
}
public static function deserialize(string $string) {
$values = json_decode($string);
return new static(PersonalKey::fromString($values->personalKey), $values->address);
}
// for supporting erasable data
public function personalKey(): PersonalKey {
return $this->personalKey;
}
public static function fromErasedState(PersonalKey $personalKey) {
$email = static($personalKey, "[email protected]");
$email->erased = true;
return $email;
}
public function wasErased() {
return $this->erased;
}
private $erased = false;
}
class ValueObjectEventStub implements DomainEvent {
/** @var ValueObject */
public $vo;
public function __construct(ValueObject $vo) {
$this->vo = $vo;
}
}