__get v presenteru, přepisování metod
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- jetpack
- Člen | 71
Zdravím,
chci se zeptat jak je to s magickýma funkcema __get a __set .
Nyní řeším takovou věc:
Mám :
1. presenter A (Rodič, dědí od UI\Presenter)
→ Definuji v ní:
protected $variable;
2. presenter B (extenduje presenter A).
V presenteru B chci zavolat :
- $this->variable->table
A chci aby v presenteru A byla metoda __get , ktera bude umet to, že:
1. jakmile zjisti, že někdo chce volat jeji promennou např tím __get
- Tak chci aby při volání $this->variable->table
se to table naplnilo nějakými daty.Bohužel Nette a asi Object si
přepisuje metody __get a __set
takže nevím jak to udělat abych mohl používat vlastní metodu __get.
Doufám, že mě pochopíte.Díky
- Ascaria
- Člen | 187
1. definuj jí v presenteru A jako:
private $variable = null; // přestane být viditelná pro presenter B
2. a přidej ještě do presenteru A
/**
* Bude vidět v potomkovi a bude se chovat
* jako metoda $this->getVariable() i jako
* read-only property $this->variable;
*/
public function getVariable()
{
if(null === $this->variable)
{
// Načtení dat tady
$this->variable = 'pes';
}
return $this->variable
}
Editoval Ascaria (3. 4. 2012 12:06)