8 de fevereiro de 2011 -
Postado por: renatolouro em Descategorizados, mas com categoria!
|
| Tecnologia | Código |
|---|---|
| HTML do Original do Template | <select name=”type_id” value=”"> <option value=”">Exemplo de Item</option> </select> |
| PHP |
<select name=”type_id” value=”<?=$type_id>”> <?php foreach($licensee_type_list as $id=>$name) { ?> <option value=”<?=$id?>”><?=$name?></option> <?php } ?> </select> |
| Smarty |
<select name=”type_id” value=”{$type_id}”> {foreach from=$licensee_type_list key=id item=name} <option value=”{$id}”>{$name}</option> {/loop} </select> |
| Dwoo |
<select name=”type_id” value=”{$type_id}”> {loop $licensee_type_list} <option value=”{$id}”>{$name}</option> {/loop} </select> |
| Simplate | <select name=”type_id” value=”" #value bind=licenensee_type_list as=item scope=inner> <option value=”" bind=item #value scope=inner>Exemplo de Item</option> </select> |
É verdade tanto o Smarty como o Dwoo simplificaram a marcação de início e fim do bloco PHP, alterando de <?php > para um simples { }. A conseqüência é que, em geral, se escreve menos. Mas, veja que são as mesmas 5 linhas, a mesma lógica, praticamente a mesma utilização. Mas, lógica do PHP foi de fato simplificada? Não parece que ambos fazem mímica do exemplo PHP?
É exatamente por isso que alguns programadores preferem continuar usando o próprio PHP. Grande parte dos Template Engines não simplifica o template codificado quando comparado com o próprio PHP, a ponto de justificar o aprendizado de uma nova linguagem. E a verdade é que muitos dos templates engines tem se convertido em verdadeiras linguagens paralelas.
Podemos já perceber a primeira grande vantagem do Simplate: a correspondência com o html original é direta! São as mesmas 3 linhas. E será sempre assim: correspondência linha a linha. Nenhuma tag acrescentada, nenhuma tag retirada. Sempre!
Perceba também que uma codificação Simplate pode ser aberta diretamente pelo navegador, independente de servidor Apache ou IIS. Neste caso, o HTMLer/Designer deverá ver exatamente aquilo que ele havia gerado.
Mas, e se no nosso html de exemplo o HTMLer/Designer tivesse adicionado algumas outras linhas options como exemplo? A correspondência linha a linha do Simplate continuaria? Sim! Com o – ainda não famoso – bind=fake. Esta instrução faz com que o simplate entenda que o dado referido é um mero exemplo, e deve ser retirado da compilação final. Ex.:
| Tecnologia | Código |
|---|---|
| HTML do Original do Template | <select name=”type_id” value=”"> <option value=”">Exemplo de Item 1 </option> <option value=”">Exemplo de Item 2 </option> <option value=”">Exemplo de Item 3 </option> <option value=”">Exemplo de Item 4 </option> </select> |
| Simplate | <select name=”type_id” value=”" #value bind=licenensee_type_list as=item scope=inner> <option value=”" bind=item #value scope=inner>Exemplo de Item 1</option> <option value=”" bind=fake>Exemplo de Item 2</option> <option value=”" bind=fake>Exemplo de Item 3</option> <option value=”" bind=fake>Exemplo de Item 4</option> </select> |
Isto cria muitas possibilidades. Por exemplo, um programador pode enviar por email o template codificado e perguntar ao HTMLer/Designer: O que ficou errado na montagem?
Mas, já que foi falado sobre o Smarty e o Dwoo, uma análise séria não poderia estar completa se não comentássemos sobre o TinyButStrong. Ele está numa categoria diferente dos dois chamada de ‘natural templates’. O Simplate também estaria nesta categoria. Os ‘natural tamplates’ são todos os template engines que não alteram a estrutura do html, assim como o Simplate. Mas, o Simplate vai ainda além, procurando respeitar também o conteúdo original do template, com todos os seus exemplos de utilização. O TinyButStrong- que merece muito ser conhecido-, coloca seus comandos exatamente no lugar do que seria o conteúdo. Sem falar que, na minha opinião, seus comandos são menos intuitivos. Simplate se torna assim ainda menos intrusivo!
Ser o menos intrusivo possível no Layout/HTML causa duas conseqüências diretas:
- Diminui consideravelmente os erros de montagem do HTML+(Tags PHP ou de outro Engine); e
- Caso, ainda assim, o erro surja -digamos que o fechamento de uma tag seja excluído por acidente- o HTMLer ou Designer encontrará um código muito mais limpo e familiar para ajudar na depuração, pois verá o seu próprio código com apenas alguns atributos a mais em algumas tags.
Fecharemos este tópico com a 1a Premissa do Desenvolvimento Simplate:
- O HTML original deve ser preservado. O Simplate deve permitir que o layout já codificado abra diretamente no navegador apresentando exatamente a mesma forma e conteúdo de quando foi criado.
Separando o Layout da Lógica
Isto alguns Template Engines fazem até bem. Mas, outros nem tanto. Como falado, muitos deles têm se convertido numa linguagem à parte, e até poderosa, com direito a IFs, Cases, For, manipulação de variáveis etc.
Em resumo, a lógica pode tranqüilamente aparecer no layout. O que salva isso é o cuidado do programador. E se é para depender do cuidado do programador para evitar o aparecimento da lógica no layout, segue a pergunta recorrente: Por que não utilizar o próprio PHP?
O Simplate possui um número reduzido de comandos que realmente evita o aparecimento de lógica de programação no template codificado. Por exemplo, não temos IF e não sentimos falta dele. Caso seja necessário saber se um bloco deve ou não aparecer, podemos utilizar o próprio comando bind. Um bind em qualquer valor nulo ou indefinido fará com que o bloco do mesmo não apareça.
Na verdade o bind serve para muita coisa:
- Não temos include, pois um bind em um objeto Simplate inclui outro template;
- Não temos IF, pois um bind em um valor nulo ou não pode fazer um bloco sumir ou não; e
- Não temos For, pois um bind em um Iterador, provoca a repetição.
Simples isso, não?
E segue agora a 2a Premissa do Desenvolvimento Simplate:
- Mantenha o Simplate simples!
Dois Requisitos e Duas Premissas que nos levaram ao Simplate
Resumindo, esta é a pequena história do Simplate. Encontramos com os dois requisitos que acreditamos que não estavam sendo cumpridos de forma apropriada:
- Facilitar o trabalho no layout codificado possibilitando que até pessoas não experiêntes em programação e, eventualmente, o próprio HTMLer ou Designer, alterem diretamente o mesmo; e
- Separar a lógica de programação e/ou código do layout.
Para atender estes requisitos melhor do que qualquer outro Template Engine, foram criadas as duas premissas. Cada uma indo ao encontro de um requisito:
- Os comandos Simplate devem preservar o HTML original, mantendo conteúdo e a forma do mesmo; e
- Mantenha o Simplate simples!
Estes são os dois princípios que norteiam o desenvolvimento do Simplate. Qualquer decisão de projeto que tenha que ser tomada é comparada com estes dois princípios.
E você? Gostou destes princípios? É o que você busca? Então? Que tal se juntar ao time? Ainda existe muito por fazer.
E seja bem vindo ao SIMPLATE!
Esperamos que Goste!
Simplate: http://simplate.org

Posts (RSS)
8 de abril de 2011 às 14:08
Ola, o site do simplate está vazio, existe previsão para iniciar as atividades
? Fiquei muito interessado, valeu!
9 de maio de 2011 às 5:51
Olá Alex,
Por isso, não se preocupe, estamos prevendo seu retorno para daqui a uma semana.
Devido a alguns outros projetos, tanto o simplate simplate, como este blog deram uma parada. Você pode perceber isso pelo tempo que levei para respoder ao seu comentário. Mas como o simplate também é utilizado em projetos internos nossos, nossa atenção a ele é diária de maneira que não temos como esquece-lo.
12 de maio de 2011 às 20:22
Valeu o retorno! Por favor me avise no lançamento!
18 de outubro de 2011 às 17:28
Olá Renato.
Encontrei esse seu post no Google enquanto procurava por alternativas para o Smarty.
Posso estar falando algo errado mas, mesmo existindo várias Template Engines para PHP o projeto Smarty é o mais forte, o que tem a maior comunidade e o que está ativo a mais tempo.
Posso parecer um fanboy xiita falando, até por que utilizo o Smarty a quase 6 anos, mas falo isso por experiência.
De tempos em tempos dou uma vasculhada por outros projetos que tenham se tornado melhor opção quando falamos de Template Engine para PHP, mas até hoje não achei nada que possa me fazer mudar.
Também gostaria de corrigir um leve engano seu.
A forma que você utilizou para gerar o campo select usando o Smarty está correta, mas existe uma outra forma melhor, e que atende ao KISS (Keep It Simple, Stupid!)
É usar a template tag – {html_options}
Passando para o template o array no formato correto, pode-se gerar um campo select em apenas uma linha.
Gostaria também de concordar com você quando você cita que os templates engines estão virando outra linguagem de programação. A idéia do template engine é facilitar a separação do código do template e, se possível, tornar algumas tarefas menos repetitivas.
A partir desse pressuposto, temos noções legais como pequenas tags que imprimem o select (como o exemplo Smarty que comentei) ou herança de template.
Por fim, eu gostaria de saber mais sobre o status do desenvolvimento deste novo template, conhecer melhor seus features e afins.
24 de outubro de 2011 às 9:25
Gostaria de saber onde posso baixar o Simplate, pois gostei da idéia e gostaria de conhece-lo e testá-lo … ?