我需要使用Nette库中的方法,包括use
命令。但它并没有像我想的那样工作,抛出了致命的错误,我称之为未定义的方法。
我该如何处理该方法才能使其工作?愚蠢的问题,但我对OOP有点新...
班级PresenterComponent.php
的方法
public function getPresenter($need = TRUE)
{
return $this->lookup('Nette\Application\UI\Presenter', $need);
}
我的代码,我需要使用该方法:
use Nette\Application\UI\PresenterComponent;
class DatabaseCollectionAdapter extends ArrayDataAdapter
{
// ..... some code......
$this->user = $this->getPresenter()->getUser();
错误:
Fatal Error
Call to undefined method Ctech\Gridator\DataAdapter\DatabaseCollectionAdapter::getPresenter()
答案 0 :(得分:0)
更改此
$this->user = $this->getPresenter()->getUser();
到此:
$object = new yourObject(); // yourObject extends PresenterComponent
$this->user = $object->getPresenter()->getUser();
答案 1 :(得分:0)
use Nette\Application\UI\PresenterComponent;
不包含或做任何魔术使其即时可用。
https://secure.php.net/manual/de/language.namespaces.importing.php
它只是一种速记,可帮助您直接使用PresenterComponent
而无需指定整个命名空间。
您的DatabaseCollectionAdapter
或ArrayDataAdapter
必须具有如下所示的功能:
class AdapterClass
public function getPresenter() {
return new Nette\Application\UI\PresenterComponent;
}
}
或类似的东西
use Nette\Application\UI\PresenterComponent;
class AdapterClass
public function getPresenter() {
return new PresenterComponent;
}
}