Náhrada za getPresenter(true) v Nette 3

raketoplan2005
Člen | 147
+
+1
-

Ahoj,

byl jsem zvyklý používat $this->getPresenter(true), což je bohužel v Nette 3 deprecated s tím, že mám použít hasPresenter().

To mi ale třeba pro PHPStan nestačí a proto musím všude, kde používám presenter psát:

if ($this->getPresenter() === null) {
    throw new \Exception('Component is not attached to the presenter.');
}

Existuje nějaká snazší cesta, prosím?


Nakonec jsem to tedy vyřešil pomocí traitu, což se mi sice nelíbí, ale co nadělám.

Editoval raketoplan2005 (6. 8. 2019 10:31)

CZechBoY
Člen | 3608
+
0
-

Ještě můžeš zkusit property

if ($this->presenter === null) {
    throw new Exception();
}

$this->presenter->xxx

Editoval CZechBoY (6. 8. 2019 15:48)

David Grudl
Nette Core | 8082
+
0
-

True je výchozí, takže místo getPresenter(true) je možné používat getPresenter() a ten pak nikdy nemůže vrátit null. Mám dojem, že v pravidle v PHPStanu https://github.com/…xtension.php je v tomto chybka.

(btw v kódu je sice stále getPresenter(): ?Presenter, ale to je čistě kvůli zpětné kompatibilitě)