extensionMethod private property

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

Ahoj,

krátký dotaz, lze nějak přistupovat k private property pomocí extensionMethod? Případně proč ne?

A proč to vlastně potřebuji. Jedná se mi konkrétně o \Nette\Forms\Rules která obsahuje pole rules kde je uložena struktura podmínek a pravidel. Bohužel se nedá dostat k zanořené podmínce, např togglu který je zapsán za podmínkou

$form->addCheckBox($name,$label)->addCondition(Form::EQUAL, 1)->toggle($id);

Takto uložený toggle je pak v zanořený

Nette\Forms\Rules(5) {
   rules private => array(1) [
      0 => Nette\Forms\Rule(7) {
         subRules => Nette\Forms\Rules(5) {
            toggles private => array(1) {
               1_toggle => TRUE
            }
	}
    }
}

bohužel Nette\Forms\Rules nemá žádný getter, který by mi požadovaný subRules podal a o pole rules je private. Navíc celá třída je final. getter getToggles funguje pouze pro první zanoření a na subRules(ke které se nelze dostat) nelze zavolat

enumag
Člen | 2118
+
0
-

Můžeš to hacknout přes reflection. A vlastně Nette to taky nějak musí procházet když generuje kód pro JS validaci, třeba to půjde podobně.