Op dit moment werk in met Smarty templates. Hier wil ik eigenlijk vanaf, omdat het in principe prima in php valt te doen (en ik meer tegen nadelen dan voordelen aanloop). Nu wil ik eigenlijk eenzelfde soort methode hanteren als ik bij Smarty deed. Even voor de volledigheid:
Ik zou denken dat ik in mn backend een aantal variabele toewijs, en daarna de template include. Echter, volgens de php standaard haalt een geïnclude bestand alle variabelen uit de global namespace. In het laatste geval moet $variabele dus in een global namespace te vinden zijn, maar dat wil ik niet! Ik wil dat voor het geïnclude bestand er een aparte namespace wordt aangemaakt. Dit komt omdat er binnen mijn cms een aantal gereserveerde variabelen zijn ($functions, $plugin, $database, $config etc) en die moet je dus niet overschrijven.
Een klasse aanmaken om een namespace te creëren is een mogelijkheid, maar dan hou je imho geen template meer over en wordt het nog steeds veel OOo php geneuzel. Het moet simpel en makkelijk om te zetten zijn.
Hoe kan ik netjes een php template bouwen, zonder variabelen in de global namespace te hoeven zetten?
Oud
PHP:
En de template:1
2
3
| $template = new template(); $template->assign($foo, "variabele"); $template->display(); |
code:
1
2
3
4
5
| <html> <body> <p> {$variabele} </p> </body> </html> |
Nieuw
Wat ik dus zou willen:PHP:
1
2
3
| $template = new template(); $template->assign($foo, "variabele"); $template->display(); |
PHP:
1
2
3
4
5
| <html> <body> <p> <?=$variabele?> </p> </body> </html> |
Ik zou denken dat ik in mn backend een aantal variabele toewijs, en daarna de template include. Echter, volgens de php standaard haalt een geïnclude bestand alle variabelen uit de global namespace. In het laatste geval moet $variabele dus in een global namespace te vinden zijn, maar dat wil ik niet! Ik wil dat voor het geïnclude bestand er een aparte namespace wordt aangemaakt. Dit komt omdat er binnen mijn cms een aantal gereserveerde variabelen zijn ($functions, $plugin, $database, $config etc) en die moet je dus niet overschrijven.
Een klasse aanmaken om een namespace te creëren is een mogelijkheid, maar dan hou je imho geen template meer over en wordt het nog steeds veel OOo php geneuzel. Het moet simpel en makkelijk om te zetten zijn.
Hoe kan ik netjes een php template bouwen, zonder variabelen in de global namespace te hoeven zetten?