Implementace metody checkRequirements()
- Ages
- Člen | 129
Zdravím,
Rád bych implementoval metodu checkRequirements()
, která by
ověřovala, Presentery, signály komponent a metody presenteru s anotací
„restricted“.
Je níže uvedený způsob správný?
//BasePresenter.php
public function checkRequirements($element): void
{
if ($element instanceof \ReflectionClass) {
if ($this->presenter->getSignal() !== null) {
bdump($this->presenter->getSignal(), 'Component signal');
// ...
} else {
bdump($this->presenter->getName(), 'Presenter name');
// ...
}
} elseif ($element instanceof \ReflectionMethod && $element->hasAnnotation('restricted')) {
if ($this->getSignal()) {
bdump($this->getSignal(), 'Presenter signal');
// ...
} else {
bdump($this->getAction(), 'Presenter action');
// ...
}
}
// ...
}
Děkuji
Editoval Ages (27. 2. 2020 12:16)
- m.brecher
- Generous Backer | 905
@Ages
Díval jsem se dnes do dokumentace https://doc.nette.org/…n/presenters a nemohl jsem tam metodu checkRequirements() najít. Ve zdrojovém kódu nette/application ale podpora metody stále zůstává – otázkou je jak dlouho? Cca před pár měsíci jsem v dokumentaci popis metody ještě našel. Neplánuje se pozdější odstranění metody? Já ji používám jako „before presenter startup“, to ale jde udělat i bez této metody pomocí Presenter::onStarup[]. Mě tato metoda přišla zbytečně komplikovaná a fakt, že se volala dvakrát v různých fázích „beforeStartup“ a „beforeAction“ vedl na nečitelný kód. Jestli metoda v Nette končí tak je to bezpochyby dobře. Co v Nette postrádám je plnohodnotný event „beforeAction“ – pokud bych potřeboval provést forward neexistující metody na existující metodu tak stejně nemohu checkRequirements() použít, protože tato metoda se volá jenom když metoda akce existuje.
Editoval m.brecher (16. 2. 17:52)
- Ages
- Člen | 129
@m.brecher Souhlasím, že z dokumentace není na první pohled
jasné, co je best practice.
Nicméně na danou metodu se stále odkazuje zde: https://doc.nette.org/…thentication#…
Jako další zdroj inspirace lze použít i toto: https://github.com/…/tree/master