Webová aplikácia v PHP

Kit

Re:Webova aplikacia v PHP
« Odpověď #60 kdy: 02. 05. 2017, 13:56:08 »
No jo, ale to je jen přechodový krok k opravdovému OOP. Statické metody mají jen velmi omezenou použitelnost.

Souhlasím, že statické metody jsou zbytečnost. Dají se zapsat jako funkce mimo třídu. Nic jako "opravdové OOP" neexistuje. Existují jen jazykové featury usnadňující řešení určitých problémů a komplikující řešení jiných. Nechci začínat flame, ale myslím, že slepá víra v paradigmata škodí. Uživatelé tebou vytvořených knihoven ti nepoděkují, když místo zavolání jedné funkce budou nuceni vytvářet nějaké instance.

Záleží na tom, jakou funkci chtějí volat. Simple Factory se nejlépe implementuje právě jako funkce. Je to však důvodem pro umístění do nějaké statické třídy? Není lepší namespace?

Na druhou stranu si mnoho používaných statických metod koleduje o vytvoření regulérních objektů. Ušetří se tím spousta psaní a projekt je pak přehlednější. Nemusí to být vždy stylem Active Recordu - data v tom objektu být nemusí. Stačí konfigurace jako v Data Mapperu.


gll

Re:Webova aplikacia v PHP
« Odpověď #61 kdy: 05. 05. 2017, 20:54:32 »
No jo, ale to je jen přechodový krok k opravdovému OOP. Statické metody mají jen velmi omezenou použitelnost.

Souhlasím, že statické metody jsou zbytečnost. Dají se zapsat jako funkce mimo třídu. Nic jako "opravdové OOP" neexistuje. Existují jen jazykové featury usnadňující řešení určitých problémů a komplikující řešení jiných. Nechci začínat flame, ale myslím, že slepá víra v paradigmata škodí. Uživatelé tebou vytvořených knihoven ti nepoděkují, když místo zavolání jedné funkce budou nuceni vytvářet nějaké instance.

Záleží na tom, jakou funkci chtějí volat. Simple Factory se nejlépe implementuje právě jako funkce. Je to však důvodem pro umístění do nějaké statické třídy? Není lepší namespace?

Na druhou stranu si mnoho používaných statických metod koleduje o vytvoření regulérních objektů. Ušetří se tím spousta psaní a projekt je pak přehlednější. Nemusí to být vždy stylem Active Recordu - data v tom objektu být nemusí. Stačí konfigurace jako v Data Mapperu.

Pokud vytvoření instance ušetří opakované psaní mnoha parametrů, tak má smysl. Ale ne všechny statické metody mají mnoho parametrů.

Kit

Re:Webova aplikacia v PHP
« Odpověď #62 kdy: 05. 05. 2017, 22:38:16 »
Pokud vytvoření instance ušetří opakované psaní mnoha parametrů, tak má smysl. Ale ne všechny statické metody mají mnoho parametrů.

Vytvoření instance typicky sníží počet parametrů metod o jeden oproti použití statických metod. Je to však jen jeden z mnoha benefitů vytvoření instance. Statické metody bývají poměrně nevýhodné, až na výjimky je vnímám spíš jako klacky pod nohy.

gll

Re:Webova aplikacia v PHP
« Odpověď #63 kdy: 05. 05. 2017, 23:02:28 »
Pokud vytvoření instance ušetří opakované psaní mnoha parametrů, tak má smysl. Ale ne všechny statické metody mají mnoho parametrů.

Vytvoření instance typicky sníží počet parametrů metod o jeden oproti použití statických metod. Je to však jen jeden z mnoha benefitů vytvoření instance. Statické metody bývají poměrně nevýhodné, až na výjimky je vnímám spíš jako klacky pod nohy.

Ty neměnné parametry zadáte konstruktoru. Pokud konstruktor nemá parametry, tak k vytváření instance nevidím důvod.

Kit

Re:Webová aplikácia v PHP
« Odpověď #64 kdy: 05. 05. 2017, 23:16:45 »
Vytvoření instance typicky sníží počet parametrů metod o jeden oproti použití statických metod. Je to však jen jeden z mnoha benefitů vytvoření instance. Statické metody bývají poměrně nevýhodné, až na výjimky je vnímám spíš jako klacky pod nohy.

Ty neměnné parametry zadáte konstruktoru. Pokud konstruktor nemá parametry, tak k vytváření instance nevidím důvod.

Mám důvod. Například psaní testů, které se se statickými metodami píší hodně blbě.

Konstruktor obvykle mívá nejméně jeden parametr. Jinak ten konstruktor nemá moc velký smysl.