diff --git a/index.md b/index.md index 90bf3fd20a73431c488af69e94e93ebbaad51538..6746f32fb145391b93be77acfd3e552425959ae8 100644 --- a/index.md +++ b/index.md @@ -191,31 +191,53 @@ Note: - Doctrine Embeddables - Custom types +--- +## Instanciation avec des value object + +Instanciation: +```php +use App\Domain\Article\Article; +use App\Domain\Article\ArticleContent; +use App\Domain\Article\ArticleTitle; + +new Article( + new ArticleTitle('my title'), + new ArticleContent('This is a very short but nice article'), + new \DateTimeImmutable(), +); +``` + +Notes: +- ça peut vite devenir très pénible + --- ## Les constructeurs nommés ```php class Article { - public static function createFromNative(string $content) + public static function createFromNative(string $title, string $content): self { - return new self(new ArticleContent($content)); + return new self( + new ArticleTitle($title), + new ArticleContent($content), + new \DateTimeImmutable() + ); } } ``` -Instanciation: -```php -new Article(new ArticleContent('This is a very short but nice article')); -// devient -Article::createFromNative('This is a very short but nice article'); -``` - Note: - On peut faire plusieurs constructeurs nommés - On peut passer le constructeur en privé pour encourager l'utilisation des constructeurs nommés. +--- +## Persister des VO avec Doctrine + +- les custom types +- les embeddables + --- ## Les custom types