PHP code example of sspat / doctrine-nullable-embeddables
1. Go to this page and download the library: Download sspat/doctrine-nullable-embeddables 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/ */
sspat / doctrine-nullable-embeddables example snippets
declare(strict_types=1);
class ValueObject
{
private $value; // Doctrine will set this property to null on hydration
public function __construct(string $value)
{
$this->value = $value;
}
public function __toString() : string
{
return $this->value; // This will be null and throw an error
}
}
declare(strict_types=1);
class ValueObject
{
private string $value; // Doctrine will try to set this property to null on hydration and an error will be thrown
public function __construct(string $value)
{
$this->value = $value;
}
public function __toString() : string
{
return $this->value;
}
}
declare(strict_types=1);
class ValueObject
{
private ?string $value;
public function __construct(string $value)
{
if ($value === '') {
throw new InvalidArgumentException('ValueObject value cannot be an empty string');
}
$this->value = $value;
}
public function __toString() : string
{
return (string) $this->value; // invariant broken, you will get an empty string
}
}
declare(strict_types=1);
interface NullableValueObjectInterface
{
public function isNull() : bool;
}
class ValueObject implements NullableValueObjectInterface
{
private ?string $value;
public function __construct(string $value)
{
$this->value = $value;
}
public function isNull() : bool
{
return $this->value === null;
}
public function __toString() : string
{
return $this->value;
}
}
use Doctrine\Common\EventManager;
use Doctrine\ORM\Events;
use Tarifhaus\Doctrine\ORM\NullableEmbeddableListenerFactory;
$listener = NullableEmbeddableListenerFactory::createWithClosureNullator();
$listener->addMapping('App\Domain\User\Model\UserProfile', 'address');
$evm = new EventManager();
$evm->addEventListener([Events::postLoad], $listener);
declare(strict_types=1);
class Entity
{
private ?ValueObject $nullableValueObject;
public function setValueObject(string $value) : void
{
$this->nullableValueObject = new ValueObject($value);
}
public function getValueObject() : ?ValueObject
{
return $this->nullableValueObject;
}
}
class ValueObject
{
private string $value;
public function __construct(string $value)
{
$this->value = $value;
}
public function __toString() : string
{
return $this->value;
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.