Zakázání funkcí require, require_once, include a include_once
- Niro
- Člen | 6
Ahoj,
ve firme se snazime zaintegrovat legacy aplikaci do aktualni pouzivajici Nette a
Latte. Pro starou cast aplikace mam pripraveny jeden konkretni presenter
slouzici jako adapter a jednu latte sablonu, ktera nacita obsah ze starych
sablon (obsahujicich hromadu volani funkci echo) pomoci:
{php require_once('legacy_view.php'); }
Vše fungovalo podle ocekavani, nicmene po stahnuti aktualni verzi Latte, jsou v sablone funkce require, require_once, include i include_once zakazany, viz: Forbidden keyword ‚require_once‘ inside tag in …/defaul.latte
Existuje nějaký workaround? Jediné co mne aktuálně napadá, je si obsah pomoci funkci ob_start a ob_end_flush ulozit do promenne a v sablone pak vypsat obsah promenne. Ale todle reseni se mi moc nelibi.
Děkuji za nápady
- Martk
- Člen | 661
Tak si můžeš udělat makro
$set->addMacro('require', function (MacroNode $node, PhpWriter $writer): string {
return $writer->write('require %node.word;');
});
Ale stejně by sis měl udělat vlastní funkci a tam předat proměnné. Protože require ti může přepsat hodnotu tvých proměnných. Předání všech proměnných v makru by mělo být asi takhle:
get_defined_vars() + $this->params;