Skip to content
Snippets Groups Projects
Verified Commit 298d2472 authored by Greg0ire's avatar Greg0ire
Browse files

Add slides for embeddables and custom types

parent 072a11ae
Branches
No related tags found
1 merge request!1Custom types embeddables
......@@ -137,6 +137,52 @@ Note:
- Doctrine Embeddables
- Custom types
---
### Les embeddables
```php
use Doctrine\ORM\Annotation as ORM;
class NiceArticle
{
private $uuid;
/** @ORM\Embedded(class = "ArticleContent") */
private $articleContent;
}
```
Note:
- À utiliser en cas de Value Object composite
- Des soucis avec la nullabilité, contournables avec un package
- Ne peuvent contenir des colonnes complexes
---
### Les custom types
```php
use Doctrine\DBAL\Platforms\AbstractPlatform as P;
final class ArticleContentType extends Type
{
public function convertToPHPValue($value, P $p): ArticleId
{
return new ArticleId($value);
}
public function convertToDatabaseValue($value, P $p): string
{
return (string) $value;
}
}
```
Note:
- Permet de contrôler qu'on respecte toujours les règles métier à
l'hydratation. Si ça crashe, c'est qu'il manque des migrations.
- La méthode `getName()` fait doublon avec le nom utilisé lors de
l'enregistrement du type dans le registre de type, et disparaître dès Doctrine 3
---
### Les constructeurs nommés
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment