Anonymní funkce problém s $database

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

Zdravím

mám problém s anonymní funkcí na PHP 5.3.x (na localhostu kde mám PHP 5.4. to funguje bezproblému) mě nette házi chybu „Cannot read an undeclared property App\Presenters\CoursePresenter::$database“ pro následující kód:

<?php
protected function createComponentSelectForm()
	{
	    $self=$this;
	 return new Nette\Application\UI\Multiplier(function ($id_course) use($self) {
	$form = new Nette\Application\UI\Form;
	$courseterms=$self->database->table('course_term')->where('id_course',$id_course)->order('datestart ASC');
...

?>

Předpokládám, že je to problém s anonymní funkcí, ale myslel jsem že by to mělo řešit přidání pomocí use – jak to vyřešit?

Děkuji za rady.

Oli
Člen | 1215
+
0
-

V PHP 5.3 musí byt database public, jinak není z anonymní funkce vidět. Respektive atribut.

Editoval Oli (15. 5. 2014 20:22)

algor
Člen | 4
+
0
-

Jasně, to mě mohlo napadnout.

Moc děkuji za radu!

Zax
Člen | 370
+
0
-

Proč nepoužít rovnou

protected function createComponentSelectForm()
    {
        $database = $this->database;
     return new Nette\Application\UI\Multiplier(function ($id_course) use($database) {
    $form = new Nette\Application\UI\Form;
    $courseterms=$database->table('course_term')->where('id_course',$id_course)->order('datestart ASC');
...

?