Implementace metody checkRequirements()
- Ages
- Člen | 128
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 | 889
@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)