__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)