for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Domain\User\Specifications;
use Domain\User\Exceptions\UserSpecificationException;
use Domain\User\User;
use Domain\User\UserRepository;
class UserUniqueEmailSpecification
{
public function __construct(User $user)
$this->user = $user;
user
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code:
class MyClass { } $x = new MyClass(); $x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion:
class MyClass { public $foo; } $x = new MyClass(); $x->foo = true;
}
public function validate()
$repository = new UserRepository();
$existingUser = $repository->fetchUserModelByEmail($this->user->getEmail());
if ($existingUser) {
if ($this->user->getId() !== $existingUser->getId()) {
throw new UserSpecificationException("Email {$existingUser->getEmail()} already exists in the system.");
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code:
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: