Strict Standards a Presentery

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

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
+
0
-

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).

soundake
Člen | 24
+
0
-

nj, já když jsem ten příspěvek dopsal, tak mě to taky napadlo, že až začnu do toho DefaultPresenteru dávat něco dalšího tak asi narazim…

tak jsem rád, že je to tak striktní a zamezí to následným škodám…

dík