Je nějaká náhrada magických @method?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Šaman
Člen | 2663
+
0
-

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
+
+1
-

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
+
0
-

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.

CZechBoY
Člen | 3608
+
0
-

Proc pri prepisovani pokracovat nadale v magii? Co se vlastne zmeni tim prepisem?

Šaman
Člen | 2663
+
0
-

Nechápu otázku.

  1. Špatně jsem se vyjádřil. Nepřepisuji projekt, ale upgraduji na aktuální Nette.
  2. 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)
  3. 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.