Twig composition
- Fluent interface
- Smart loader
- Context container
use b2r\Component\Twig\Twig;
$twig = new Twig();
echo $twig
->template('hello', 'Hello, {{ name }}') // Define 'hello' template and 'hello' as current template
->name('world') // Set name context
; #=>'Hello, world' invoke __toString()
use b2r\Component\Twig\Twig;
$twig = new Twig(__DIR__ . '/templates');
$twig->addSuffix('.twig');
$twig->addFilters([
'l' => function ($value) {
return strtolower($value);
},
'u' => function ($value) {
return strtoupper($value);
},
]);
$twig->addFunctions([
'x2' => function ($value) {
return $value * 2;
},
]);
$twig->addGlobals([
'foo' => 'FOO',
'bar' => 'BAR',
'baz' => 'BAZ',
]);
echo $twig->template('hello')->name('world');
hello.twig
Hello, {{ name }}
Hello, {{ name|u }}
Hello, {{ name|l }}
Hello, {{ foo }}
Hello, {{ bar }}
Hello, {{ baz }}
Score: {{ x2(100) }}
outputs
Hello, world
Hello, WORLD
Hello, world
Hello, FOO
Hello, BAR
Hello, BAZ
Score: 200