Kdyby\Doctrine Jak dostat konstantu z config.neon do entity
- lvq
- Člen | 47
Potřeboval bych nějak dostat konstantu z config.neon do entity.
Napadlo mě zaregistrovat entitu jako službu a poté ji tam dostat přes postLoad event a zároveň si napojit nějakou událost na
konstruktor a tím bych pokryl možnosti, když si entitu vytvářím sám
i když se načítá z db a vytváří ji entityManager. Ale moc se mně to
řešení nelíbí.
Obecně by se dal ten dotaz zobecnit na to, jak dostat konstantu/službu do
entity.
Ještě dodám, co je cílem: v db mám nějaké zakryptované řetězce a potřebuji v getteru znát šifrovací klíč, protože chci předat informaci již odkryptovanou.
- jiri.pudil
- Nette Blogger | 1032
Osobně bych potřebné věci entitě předával až ve chvíli, kdy jsou opravdu potřebné, tj. pokud „potřebuji v getteru znát šifrovací klíč“, předám si ho do getteru:
class Entity
{
public function getDecryptedValue(string $encryptionKey)
{
return openssl_decrypt(...);
}
}
// $encryptionKey získám přes DI
$entity->getDecryptedValue($encryptionKey);
A ještě lépe nejdřív vytáhnu šifrovací logiku ven, abych neměl v entitě skrytou závislost na použitém algoritmu, a mohl ho tak snadněji vyměnit za silnější, pokud to někdy bude nutné:
class Entity
{
public function getDecryptedValue(EncryptionHandlerInterface $encryption)
{
return $encryption->decrypt($this->encryptedValue);
}
}
// $encryption získám přes DI
$entity->getDecryptedValue($encryption);
parameters:
encryptionKey: ...
services:
- OpensslEncryptionHandler(%encryptionKey%)