[VYŘEŠENO] Potíže s novými Closure na 2.0.4
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Jan Endel
- Člen | 1016
tl;dr version
Pokud má služba property se stejným názvem jako jeho metoda, tak díky ObjectMixin vytváří démonické chyby při vypisování přes šablonu.
long version
Zdravím, chybu jsem aplikoval na čistém sandboxu staženém na těchto
stránkách (verze stable 2.0.4).
pakliže mám service BugService:
class BugService extends \Nette\Object
{
private $pay;//platba
public function pay($foo)//zaplatit s pripoctenim DPH
{
$this->setPay($foo * 1.2);
return $this->getPay();
}
public function setPay($pay)
{
$this->pay = $pay;
}
public function getPay()
{
return $this->pay;
}
}
zaregistrovanou jako service:
services:
authenticator: Authenticator
bugService: BugService
použitou v presenteru:
class HomepagePresenter extends BasePresenter
{
public function renderDefault()
{
$this->template->bugService = $this->context->bugService;
}
}
a v šabloně
{block content}
{dump $bugService->pay}
{$bugService->pay}
vyhodí tuhle laděnku
Editoval pilec (28. 8. 2012 15:58)
- Filip Procházka
- Moderator | 4668
Určitě je všem jasné, co za to může. Doporučil bych přehodit pořadí, aby getter měl vyšší prioritu. A zvážil bych vyhazování výjimky v případě, že stejně jako getter se jmenuje i nějaká metoda. Pošleš pull request?
Minimálně do 2.0.*
by se ta priorita měla otočit. V masteru
by to mohlo zůstat tak jak to je, ne?
Editoval HosipLan (28. 8. 2012 15:49)