Strict Standards a Presentery
- soundake
- Člen | 24
Po updatu na poslední verzi Nette na mě začla skákat tato chyba:
Strict Standards: Declaration of Admin_Documents_ArticlesPresenter::renderDefault() should be compatible with that of Admin_DefaultPresenter::renderDefault() in /Applications/MAMP/htdocs/nette_projects/kchch/app/presenters/AdminModule/DocumentsModule/ArticlesPresenter.php on line 8
Admin_Documents_ArticlesPresenter je potomkem Admin_DefaultPresenter.
Admin_DefaultPresenter::renderDefault():
public function renderDefault()
{
$this->template->title = "Dashboard";
}
Admin_Documents_ArticlesPresenter::renderDefault():
public function renderDefault($orderBy,$offset,$limit)
{
...
}
Jak z toho ven? Budu si muset udělat ještě další AdminBasePresenter poděděný od stávajícího BasePresenteru, který bude mít metody shodné pro všechny presentery v AdminModule, které mám momentálně v Admin_DefaultPresenter?
Díky za radu.
Ps: public function renderDefault($orderBy,$offset,$limit) v Admin_DefaultPresenter nepomůže :( Navíc by to bylo velmi nesystémové.
Editoval soundake (12. 12. 2008 11:27)
- David Grudl
- Nette Core | 8218
Kompatibilita metod znamená, že mají stejné povinné parametry a ta zděděná může mít navíc nějaké nepovinné (tj. s výchozí hodnotou).
Ale spíš bych upravil samotný návrh. Admin_DefaultPresenter by měl být abstraktní a nevidím moc smysl, proč by měl obsahovat konkrétní implementace view, tedy třeba metodu renderDefault. Ty bych dal jen do listů, tedy třeba Admin_Documents_ArticlesPresenter.
(chyba začala skákat po updatu, protože Debug ve výchozím nastavení nyní zobrazuje i úroveň chyb E_STRICT. Záměrem je právě odhalit všechny podobné chyby).