Je nějaká náhrada magických @method?
- Šaman
- Člen | 2663
Ahoj, přepisuji větší projekt do nového Nette a docela často se tam
používají magické metody deklarované anotací @method.
Konkrétně „found 175 matches in 50 files“ :)
Je nějaká náhrada této funkce v Nette 2.4 a 3.0, pls?
Připadá mi lepší používat tyhle magické funkce, než podporované
magické property a přímý zápis do nich. Pokud bych totiž potřeboval
změnit chování třeba nějakého setteru, tak jen smažu anotaci a dopíšu
si ten setter explicitně. Všechna volání toho setteru ale mohu nechat
beze změny.
A nechce se mi dopisovat 175 metod, které nedělají nic jiného, než že přečtou, nebo nastaví property. Zvlášť, když jak typ parametru setterů, tak návratová hodnota getterů jsou popsané v té anotaci.
- David Matějka
- Moderator | 6445
Je nějaká náhrada této funkce v Nette 2.4 a 3.0, pls?
nn
Připadá mi lepší používat tyhle magické funkce, než podporované magické property a přímý zápis do nich. Pokud bych totiž potřeboval změnit chování třeba nějakého setteru, tak jen smažu anotaci a dopíšu si ten setter explicitně.
@property
volaji prislusnou get/set metodu
vytvareni getteru/setteru pres phpstorm mi prijde i rychlejsi nez rucne psat tu method anotaci
- Šaman
- Člen | 2663
Díky. Takže si tuhle podporu asi budu chtít dopsat.
David Matějka napsal(a):
@property
volaji prislusnou get/set metodu
To je sice hezké, ale raději vím, zda volám metodu, nebo property. Ona ta třída, která volání provádí, nemusí mít ani tušení, že nějaká magic @property, nebo @method existuje. A zapisovat přímo do property je fuj.
A navíc já tu property často definuji explicitně a magicky jí jen
vytvořím rychlé get|set|is
metody.
- Šaman
- Člen | 2663
Nechápu otázku.
- Špatně jsem se vyjádřil. Nepřepisuji projekt, ale upgraduji na aktuální Nette.
- Anotaci @method nepovažuji za magii – vše je jednoznačně popsané, dokonce víc, než v @property, která je nadále podporovaná (zvenku přistupuji k metodám, nikoliv k navenek public property a součástí API je i informace, že např existuje jen getter ale ne setter)
- Získám tím kratší kód, tedy i menší riziko překlepu. Dále získám kontrolu návratového typu getteru, což jsem až do PHP 7 neměl a stejně jsem aspoň kvůli našeptávání používal anotace.
Nicméně zatím jsem ty metody dopsal, abych mohl upgradovat bez rizika dalších problémů způsobených vlastní magickou traitou. Dvě třetiny těch anotací byly stejně jen kvůli našeptávání, takže se jich to netýkalo.