You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
V určitých situacích je potřeba zjistit, zda entita (obecně třída) implementuje nějaké rozhraní (obecně implementuje nějaké metody). Pokud chceme po nějaké entitě, aby vlastnila nějaké properties, můžeme sice změnit její abstraktní třídu, ovšem tohle řešení je špatné, protože při více takových požadavcích zaráz z více zdrojů narážíme na problém vícenásobné dědičnosti, která v PHP naštěstí ani není. Alternativou je definice těchto properties v rozhraní, ale to jednak současný LM neumí a jednak by to bylo proti principu rozhraní.
Navrhuji tedy, aby parser kontroloval, zda entita obsahuje všechny property anotace uvedené ve všech jejích rozhraních a kontroloval ideálně i datový typ.
příklady rozhraní, které bych ocenil kontrolovat pouze podle toho, zda je entita implementuje:
Já jsem určitě pro, přinese to zase užitečné nové možnosti.
Rozhodně jsem ale pro, aby rozhraní zůstalo rozhraním, a tedy aby se property nepřebírali přímo z něj, ale aby oproti němu byly property konkrétních tříd jen porovnávány.
V určitých situacích je potřeba zjistit, zda entita (obecně třída) implementuje nějaké rozhraní (obecně implementuje nějaké metody). Pokud chceme po nějaké entitě, aby vlastnila nějaké properties, můžeme sice změnit její abstraktní třídu, ovšem tohle řešení je špatné, protože při více takových požadavcích zaráz z více zdrojů narážíme na problém vícenásobné dědičnosti, která v PHP naštěstí ani není. Alternativou je definice těchto properties v rozhraní, ale to jednak současný LM neumí a jednak by to bylo proti principu rozhraní.
Navrhuji tedy, aby parser kontroloval, zda entita obsahuje všechny property anotace uvedené ve všech jejích rozhraních a kontroloval ideálně i datový typ.
příklady rozhraní, které bych ocenil kontrolovat pouze podle toho, zda je entita implementuje:
The text was updated successfully, but these errors were encountered: