Persistentní parametr $name, chyba v Reflection
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.

- LM
- Člen | 206
Při použití persistentní parametru name, dochází k tomu
že je přenášen i z jiných presenterů, které tento parametr nemají
(nedědí definující presenter a ani ho nemají definován dodatečně).
Např.
class DefaultPresenter extends Presenter
{
/** @persistent string */
public $name;
}
class AuthPresenter extends Presenter
{
public function renderDefault()
{
echo $this->link('default:default'); // ?presenter=default&name=
}
}
Zjistil jsem že chyba je v metodě
PresenterHelpers::getPersistentParams() kde je použita metoda
ReflectionProperty::getDeclaringClass která místo aby vrátila
DefaultPresenter vrátí ComponentContainer(proto
v metodě Presenter::saveState projde podmínka s
instanceof řádka 826), myslím že je to způsobeno definováním
atributu $name v Component, ale nechápu proč vrací
ComponentContainer.
Je možné tohle vůbec obejít? (kromě přejmenování parametrů).
Testováno na verzi PHP-5.2.3 a 5.2.6 a Nette z 25.5.08.