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); } }