private persistent parametr – návrh: vyhazovani vyjimky
- kedrigern
- Člen | 102
Zdravím,
když použiji v presenteru/komponentě:
/** @persistent */
private $data;
tak to pochopitelně a zcela správně nefunguje, jelikož persistentní parametr se předává v url a tam asi private properties dávat nechceme.
Nicméně problém je, že to nevyhodí výjimku, tedy se ani neprojeví v Laděnce. Je toto chování správné? Dnes jsem tuhle chybu hledal docela dlouho.
Má to důvod, nebo bylo rozumné toto doplnit (poslat např. pull request)?
- frosty22
- Člen | 373
Řekl bych že důvod je ten, že nelze získat hodnotu property přes reflexi pokud není veřejná – viz http://schlitt.info/…perties.html
Jinak tedy nette to získává zde https://api.nette.org/…ent.php.html#249 a jak je vidno, tak kontrola public je zde cílená, a co se týče tedy vyjímky, tak na druhou stránku by to byl jistý BC break, leč málo pravděpodobný a též tedy pravidlo pro persistentní parametry je veřejná proměnná presenteru/componenty která obsahuje anotaci persistent .. a pokud to není veřejná pak to tedy je prostý komentář .. ale to je na druhou stránku jen úhel pohledu.
- Majkl578
- Moderator | 1364
frosty22 napsal(a):
Řekl bych že důvod je ten, že nelze získat hodnotu property přes reflexi pokud není veřejná – viz http://schlitt.info/…perties.html
Takové omezení od 5.3 neplatí. No zde opět vidíme, že 5.2 je koule na noze. :)