Tharos / LeanMapper

Lean Mapper is a tiny ORM based on powerful Dibi database abstraction library for PHP.
MIT License
87 stars 35 forks source link

EntityFactory->createCollection() by měla dostávat $entityClass #166

Open miroslav-mrazek opened 7 months ago

miroslav-mrazek commented 7 months ago
# IEntityFactory
function createCollection(array $entities, ?string $entityClass = null);

Doteď jsem používal vlastní třídu Collection, která uměla pár rutin pro práci s kolekcí entit. Pokud ale pro nějakou entitu potřebuji zvláštní kolekci (dejme tomu BookCollection extends Collection), nemám jak ji vytvořit. Zkouším detekovat typ entity přímo z pole entit, ale to je ošklivé a navíc nespolehlivé - kolekce může být i prázdná.

Hodilo by se mi tedy předávat $entityClass do metody createCollection. Ta se volá na třech místech a vždy třídu vytvářených entit znám. Mohu poslat PR. Změna deklarace způsobí nekompatibilitu s případnými vlastními createCollection(array $entities);, ale v logice kódu nekompatibilita nevznikne, pokud je $entityClass volitelný parametr.

Případně by se to dalo řešit přetížením dotčených metod ve třidě Entity a Repository, ale ty jsou private a tedy není možné je upravit.

janpecha commented 7 months ago

Ahoj,

rozšířit IEntityFactory::createCollection() o volitelný parametr $entityClass mi přijde jako rozumný požadavek. Klidně pošli PR :)