Тема: Рефакторинг фабрики
Маю легасі проект, у якому є така конструкція:
class entityCreator
{
function get($entityName)
{
return new $entityName();
}
}
class entity1
{
function __contruct()
{
global $db;
...
}
}
class entity2
{
function __contruct()
{
global $logger;
global $memcache;
...
}
}
Таких entity є ~100
Очевидно, що хочу позбутися global
Зараз вже частина системи перебита на symfony.
Найпростіший варіант, мабуть, це визначити всі entity у service і в entityCreator передати serviceContainer
Але не хочеться описувати всі 100 ентіті.
Другий варіант. Враховуючи, що левова частка ентіті використовує тільки базу, у service описати тільки специфічні ентіті. А у функції get перевіряти, якщо у serviceContainer є потрібна ентіті беремо її, якщо ні, тоді return new $entityName($serviceContainer->get('db'));
Мені здається, що це доволі поширена ситуації, можливо хтось порадить, якись кращий варіант?