| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- <?php
- namespace App\DataPersister;
- use ApiPlatform\Core\DataPersister\ContextAwareDataPersisterInterface;
- use App\Service\OnChange\Organization\OnChangeContext;
- use App\Service\OnChange\Organization\OnChangeDefault;
- use App\Service\OnChange\Organization\OnChangeInterface;
- use Symfony\Contracts\Service\Attribute\Required;
- /**
- * Classe de base pour les DataPersister classiques, proposant des hook pre et post persist,
- * ainsi que certaines méthodes liées au contexte de la mise à jour.
- */
- class EntityDataPersister implements ContextAwareDataPersisterInterface
- {
- // <-- dependencies injections
- protected ContextAwareDataPersisterInterface $contextAwareDataPersister;
- protected OnChangeInterface $onChange;
- #[Required]
- public function setContextAwareDataPersister(ContextAwareDataPersisterInterface $contextAwareDataPersister): void {$this->contextAwareDataPersister = $contextAwareDataPersister;}
- public function __construct(
- OnChangeDefault $onChange
- ) {
- $this->onChange = $onChange;
- }
- // dependencies injections -->
- public function supports($data, array $context = []): bool
- {
- return false;
- }
- /**
- * Persist l'entité et déclenche les différents hooks de la classe OnChangeInterface définie par le data persister
- *
- * @param mixed $data
- * @param array $context
- * @return object|void
- */
- public function persist($data, array $context = [])
- {
- $onChangeContext = new OnChangeContext($context);
- $this->onChange->validate($data, $onChangeContext);
- $data = $this->onChange->preProcess($data, $onChangeContext);
- $this->onChange->beforeChange($data, $onChangeContext);
- $result = $this->contextAwareDataPersister->persist($data, $context);
- $this->onChange->onChange($data, $onChangeContext);
- return $result;
- }
- /**
- * La fonction native 'remove' n'est pas supportée par défaut, la réimplémenter au besoin
- *
- * @param mixed $data
- * @param array $context
- */
- public function remove($data, array $context = []): void {
- throw new \RuntimeException('not supported', 500);
- }
- }
|