IDE u metody construct v presenterech řve „Missing parent constructor“

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

Ahoj,
u všech presenterů, které dědí od BasePresenteru mi IDE (PHPStorm) řve u metody __construct „Missing parent constructor“.

BasePresenter vypadá takto:

namespace FrontModule;

use Nette\Application\UI\Form;
use Nette\Application\UI\Presenter;

abstract class BasePresenter extends Presenter
{
}

a např. HomePresenter začíná takto

namespace FrontModule;

use Nette;
use App\Model\ArticleManager;
use App\Model\CategoryManager;


class HomepagePresenter extends BasePresenter
{
    /** @var Nette\Database\Context */
    private $articleManager;
    private $categoryManager;


    public function __construct(ArticleManager $articleManager, CategoryManager $categoryManager)
    {
        $this->articleManager = $articleManager;
        $this->categoryManager = $categoryManager;
    }
	....
}

Mohl by mi někdo poradit, co se IDE nelíbí a jak to opravím ? Díky moc.

CZechBoY
Člen | 3608
+
+1
-

Zavoláš parent konstruktor :D

public function __construct(ArticleManager $articleManager, CategoryManager $categoryManager)
    {
		parent::__construct(); // pokud je konstruktor předka bez parametrů

        $this->articleManager = $articleManager;
        $this->categoryManager = $categoryManager;
    }
Oli
Člen | 1215
+
+1
-

Projdi si všechny předky, někde narazíš na třídu, která má v sobě konstruktor. A IDE to ví a tak tě na to upozorní. On je tam teda jen z historických důvodů a myslím, že když ho nezavoláš, tak se nestane vůbec nic :-)

Martk
Člen | 661
+
0
-

Štve-li tě ta hláška a nechceš volat parent construct v každém presenteru, tak si v BasePresenteru definuj metodu construct bez těla, mělo by to pomoct. V tom konstruktoru se jen přiřazuje proměnné payload stdClass, ale to i v metodě run.

andros
Člen | 145
+
0
-

Díky moc za rady. Zase jsem o něco chytřejší. Rada od @CZechBoY zavolat parent::__construct() aby byl IDE spokojený pomohla na jedničku . Díky :)

CZechBoY
Člen | 3608
+
0
-

@Martk no potom se hláška přesune do BasePresenteru… nicméně i v potomcích by se měl volat parent::__construct() a to všude, ne jen v presenterech.