Hacker News new | past | comments | ask | show | jobs | submit login

This would be a great way to create a PHP-based templating system that just uses a subset of PHP as syntax. Would be very fast.



This must be a stupid question because I've noticed that it's commonplace, but why do PHP-based projects try to build templating systems in PHP? Do they not realize that the original use case for PHP was to turn plain HTML files into dynamic templates?

I saw this in Horde, the other day; mixed in with the usual PHP tags they had added their own XML tags for doing "if/else" type things in the template. What is the purpose of that?


I believe it's an attempt to assure there is no logic in the template code.

...which I think is retarded and anal, since the important part is separation of business logic and presentation. There is bound to be some level of display logic, which is why most template languages have loops and conditionals. But if you are going that far, why not just use PHP? It is arguably a very good template language.


PHP already has this built into it - http://us.php.net/alternative%20syntax - just use it.


That's not a subset, that's just a different syntax.

If you're making a template language for use in a SaaS system, you'd want to perhaps allow echo, but not file_put_contents.


Funny you say that, because what you are describing is already implemented and called the Smarty template system[1], one of the worst examples of the Inner-platform effect[2] the world has ever seen.

1: http://www.smarty.net/ 2: https://en.wikipedia.org/wiki/Inner-platform_effect


I'm saying this for years now and people think I hate templates as a concept. I only dislike template systems like Smarty. Ever since I learned that there is a {php}{/php} tag in Smarty, I new the system was broken.


{php}{/php} is deprecated as of Smarty 3.


The issue with Smarty is that it is yet another syntax to learn. A PHP template system that uses PHP for the logic and control structures makes a lot more sense IMO.


That is what PHP is.


I don't really think Smarty has anything to do with this. Though I do agree on the "one of the worst examples" point.


Well apparently this is not a popular opinion around here but I actually like Smarty when the situation calls for it. In version 3 the "block" feature makes Smarty templates somewhat similar to .NET "Master Pages". I personally like using Smarty as the View in an MVC pattern. I've even used it for email message templates.

I have one reason for not using Smarty in my more recent work but it has nothing to do with my feelings about Smarty itself. Rather just that a lot of web apps lately have all of the view logic in the client. So the server rendering of the view is often just outputting mostly static HTML for the Javascript to use as it's starting point. So it's not that I dislike Smarty, it's just that there's barely any logic at all happening at that level so there's no need for it.


I used to use smarty for all my projects. Mostly because I had designers working on them and it was easier for them to read/manage.

But, you can make just as readable code without smarty and load times are much faster (although smarty does have a caching system).


As someone who has been forced to work with on a social web-app using smarty, I find myself asking co-workers to "just kill me now". Hey atleast I'm having a fun time moving all the business logic those smart smarty guys from India put in...right? no more, No but seriously, kill it with fire.

And caching..on disk, who cares? In general, dO we not have better, faster and more versitile options that would in any way justify a choice for smarty?


PHP already has this: the `disable_functions` INI setting.[1]

Disclaimer: I've never had to use this, so don't know what the limitations and pitfalls are for this, and there may be security concerns that I'm unaware of.

[1] http://www.php.net/manual/en/ini.core.php#ini.disable-functi...


There is a php port of the extremely awesome and popular HAML templating system from Ruby, phphaml: http://phphaml.sourceforge.net/


There is also a modern php implementation of HAML at https://github.com/arnaud-lb/MtHaml

I believe it's much faster too.


Lithiums' templating "engine" does something like that, using the tokenizer.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: