podpora klíčového slova friend v Nette\Object
- paranoiq
- Člen | 392
nápad k zamyšlení inspirovaný https://phpfashion.com/…y-experiment
pro přístup k veškerým protected členům třídy:
/**
* @friend(IWebPageLoader)
*/
class WebPage {
...
protected function setData($data) {
...
}
}
nebo pro přístup ke konkrétní protected metodě nebo vlastnosti:
class WebPage {
...
/**
* @friend(IWebPageLoader)
*/
protected function setData($data) {
...
}
}
Editoval paranoiq (29. 10. 2009 13:10)
- Honza Kuchař
- Člen | 1662
Zajímavý nápad. Mě se to líbí. :) Akorát je tu zase problém s eAcceleratorem. :(
- Honza Marek
- Člen | 1664
No já nevim, tyhlety friend věci mi přijdou trochu proti OOP. Navíc je to feature request spíš pro nette language a ne nette framework.
- Ondřej Mirtes
- Člen | 1536
Potomci společné třídy si navzájem vidí protected properties, tak si myslím, že něco takovéhleho není třeba.
- Petr Motejlek
- Člen | 293
Nevím, jestli ty anotace jsou to pravé ořechové. Hezky se to čte, ale dokud nebude možný si nechat inteligentně napovídat od IDE, tak bych se přikláněl k použití nějaké speciální metody (jako to je třeba u persistentních komponent/atributů) ;).
- Honza Marek
- Člen | 1664
LastHunter napsal(a):
Potomci společné třídy si navzájem vidí protected properties, tak si myslím, že něco takovéhleho není třeba.
Mám tomu rozumět tak, že všichni potomci třídy Object si můžou navzájem hrabat v protected properties?
- paranoiq
- Člen | 392
Honza M. napsal(a):
Mám tomu rozumět tak, že všichni potomci třídy Object si můžou navzájem hrabat v protected properties?
nikoliv. mohou si navzájem hrabat jen do těch protected properties, které měly v okamžiku zdědění. čili např. rodič nemůže zasahovat do nově definovaných chráněných vlastností potomka a sourozenec nemůže sourozenci do toho, co nebylo definováno v rodičovi
@Petr Motejlek: samozřejmě, co jde udělat anotacemi jde udělat
méně elegantně (ale zato 100% spolehlivě) i kódem, třeba tak jako u
@persistent
. snad nám David vyzradí co na nás chystá on s tou
podporou internal
sebelepší IDE vám vlastnosti definované takovou magickou metodou nenapoví, pokud nebude mít přímo podporu daného frameworku. to už se dá v IDE spíše očekávat nějaká obecná podpora anotací
Editoval paranoiq (30. 10. 2009 18:13)
- David Grudl
- Nette Core | 8218
paranoiq napsal(a):
Honza M. napsal(a):
Mám tomu rozumět tak, že všichni potomci třídy Object si můžou navzájem hrabat v protected properties?
nikoliv. mohou si navzájem hrabat jen do těch protected properties, které měly v okamžiku zdědění.
Tusim ze muzou hrabat do vseho.
- paranoiq
- Člen | 392
tak je to tak na půl cesty. rodič může šahat potomkům do všeho, i když o tom prd ví (to jsem netušil a moc se mi to nelíbí), ale sourozenci jsou mezi sebou navzájem v bezpečí
testík: http://pastie.org/677210