private persistent parametr – návrh: vyhazovani vyjimky

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

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

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

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. :)