Nefunguje Autentifikace, viz. Akrabat

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

Hází to chybu

Notice: Only variable references should be returned by reference in C:\Program Files\VertrigoServ\www\cms\nette-0.8\Nette\Web\SessionNamespace.php on line 117

Notice: Only variable references should be returned by reference in C:\Program Files\VertrigoServ\www\cms\nette-0.8\Nette\Web\SessionNamespace.php on line 117

Notice: Only variable references should be returned by reference in C:\Program Files\VertrigoServ\www\cms\nette-0.8\Nette\Web\SessionNamespace.php on line 117

Notice: Indirect modification of overloaded property SessionNamespace::$rq has no effect in C:\Program Files\VertrigoServ\www\cms\nette-0.8\Nette\Web\User.php on line 285
David Grudl
Nette Core | 8228
+
0
-

fixed

romansklenar
Člen | 655
+
0
-

Obecný dotaz: Pokud vytvořím ve třídě, která je potomkem Nette\Object, metodu __get()

public function &__get($name)
{
    // volitelne: nejaky muj kod zde

    parent::__get($name);
}

pak při každém jejím vykonávání se mi vyhodí ona chyba Notice: Only variable references should be returned by reference právě na řádce s parent::__get($name);.

Dokázal by mě někdo objasnit, proč se to takto chová?

EDIT: nemá to nic společného s nefunkční autentifikací

Editoval romansklenar (12. 10. 2008 16:39)

LM
Člen | 206
+
0
-

Když je metoda označená že vrací referenci musí tedy nějakou referenci proměnné vrátit.

public function &__get($name)
{
	$temp = NULL;
	return $temp;
}
romansklenar
Člen | 655
+
0
-

Tzn nemohu použít volání rodičovské metody? Nebo se to dá nějak obejít?

LM
Člen | 206
+
0
-

Můžeš použít metodu rodiče, jen musíš vždy vrátit nějakou proměnou (třeba i return parent::__get($name)).

Editoval LM (12. 10. 2008 17:14)

romansklenar
Člen | 655
+
0
-

Perfektní! Tuhle oblast znalostí php musím ještě dopilovat, díky moc LM

David Grudl
Nette Core | 8228
+
0
-

To je kvůli návrhové vadě PHP. __get musí vracet referenci, aby overloadovaná proměnná mohla být pole. A pokud __get vrací referenci, nemůže mít uvnitř třeba return NULL.