Vlastné helpery využívajúce vstavané, PHP 5.2
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- RichardT
- Člen | 43
Zdravím,
akým spôsobom pridať helper tak, aby vedel využívať štandartné (a
ideálne aj predtým definované vlastné) helpery? V php 5.3 je to riešené
anonymnými funkciami s použitím use
, ale ako na to v PHP 5.2,
ktoré anonymné funkcie nepozná?
Príklad v PHP 5.3:
abstract class BasePresenter extends Nette\Application\UI\Presenter
{
protected function createTemplate($class = NULL)
{
$template = parent::createTemplate($class);
$template->registerHelper('money', function ($prize, $currency = '€') use ($template) {
$prize = (double) trim(strtr($prize, array(' ' => '', ',' => '.')));
return $template->number($prize,2,',',' ') . ' ' . $currency;
});
return $template;
}
}
PHP 5.2:
Terra incognita
- Vojtěch Dobeš
- Gold Partner | 1316
class MyHelpers
{
private $template;
public function setTemplate($template)
{
$this->template = $template;
}
public function money($prize, $currency = '€')
{
$prize = (double) trim(strtr($prize, array(' ' => '', ',' => '.')));
return $this->template->number($prize,2,',',' ') . ' ' . $currency;
}
}
$myHelpers = new MyHelpers;
$myHelpers->setTemplate($template);
$template->registerHelper('money', callback($myHelpers, 'money'));
Editoval vojtech.dobes (12. 9. 2012 1:10)