Funkcia spracovávajúca formulár – private či public?
- ondrej1
- Člen | 14
V Nette dokumentácii pri „Píšeme první aplikaci!“ je táto metóda private, v kapitole „Formuláře“, je ale public.
Ak použijem:
$form->onSuccess[] = [$this, 'commentFormSucceeded'];
nasledná funckia nemôže byť private.
Ale pri použití:
$form->onSuccess[] = $this->commentFormSucceeded(...);
následná funkcia funguje aj ako private.
- jiri.pudil
- Nette Blogger | 1034
Ahoj,
první varianta vytváří callable, který se potom volá zvnějšku, proto musí být ta metoda veřejná.
Druhá varianta je moderní (PHP 8.1+) syntactic sugar pro
Closure::fromCallable([$this, 'commentFormSucceeded'])
, což ten
callable zabalí do closure a zachová v ní aktuální scope.
V tomhle případě je to scope dané třídy, odkud jsou přístupné i její
privátní metody.
Osobně nevidím důvod v moderní codebase nepoužívat druhou variantu.