2017-04-21 4 views
0

私はuseコマンドでインクルードするNetteライブラリのメソッドを使用する必要があります。しかし、それは私がしたい、致命的なエラーをスローし、私は未定義のメソッドを呼び出しているように動作しません。 私はそれを動作させるにはどうすればよいでしょうか?愚かな質問が、私は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

コピーのような

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

か何かとあなたの質問に完全なエラーを貼り付けてください。

あなたDatabaseCollectionAdapterまたはArrayDataAdapterは、次のようになります機能を有していなければなりません。 –

+0

@TobiasF。完了しました – HS1993

答えて

0

変更する

これまで3210
$this->user = $this->getPresenter()->getUser(); 

$object = new yourObject(); // yourObject extends PresenterComponent 
$this->user = $object->getPresenter()->getUser(); 
+0

2)getPresenter()がPresenterComponentにあります – HS1993

+0

抽象クラスなので、私はできませんが、他のクラスではこのメソッドを使用しています。 – HS1993

+0

"PresenterComponent"があなたはそれを拡張する他のクラスを持っています - あなたは "PresenterComponent"なしでそれを使うことができます –

0

use Nette\Application\UI\PresenterComponent;は、その場でそれの機能を利用できるようにする魔法の任意の種類を含めたりしません。

https://secure.php.net/manual/de/language.namespaces.importing.php

それはあなたが全体の名前空間を指定せずに、直接PresenterComponent使用するのに役立ちますだけ速記です。この

use Nette\Application\UI\PresenterComponent; 

class AdapterClass 

    public function getPresenter() { 
    return new PresenterComponent; 
    } 

} 
関連する問題