lightncandy
lightncandy copied to clipboard
SafeString fails with FLAG_EXTHELPER | FLAG_BESTPERFORMANCE
The PHP Code:
require('./vendor/autoload.php');
use LightnCandy\LightnCandy;
class HelperClass
{
public static function printStrong ($value)
{
return new \LightnCandy\SafeString('<strong>'.$value.'</strong>');
}
}
// The Template:
$template = <<<VAREND
{{ PrintStrong "Hello world" }}
VAREND;
$phpStr = LightnCandy::compile($template, array(
// Used compile flags
'flags' => LightnCandy::FLAG_HANDLEBARS
| LightnCandy::FLAG_BESTPERFORMANCE
| LightnCandy::FLAG_EXTHELPER,
'helpers' => [
'PrintStrong' => HelperClass::class . '::printStrong'
],
));
echo "Generated PHP Code:\n$phpStr\n";
// Input Data:
$data = array();
// Save the compiled PHP code into a php file
file_put_contents('render.php', '<?php ' . $phpStr . '?>');
// Get the render function from the php file
$renderer = include('render.php');
echo "Result:\n" . $renderer($data);
The Issue:
I expect to get the normal HTML returned. When omitting LightnCandy::FLAG_BESTPERFORMANCE or LightnCandy::FLAG_EXTHELPER, it works as expected.
But when both flags are set, the HTML is escaped, thus SafeString is ignored.