使用包含的库中的方法

时间:2017-04-21 11:00:05

标签: php

我需要使用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()

2 个答案:

答案 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而无需指定整个命名空间。

您的DatabaseCollectionAdapterArrayDataAdapter必须具有如下所示的功能:

class AdapterClass

  public function getPresenter() {
    return new Nette\Application\UI\PresenterComponent;
  }

}

或类似的东西

use Nette\Application\UI\PresenterComponent;

class AdapterClass

  public function getPresenter() {
    return new PresenterComponent;
  }

}