Estive precisando recentemente de criar uma galeria de imagens que tivessem alguns recursos interessantespara um site de um fotografoLogicamente eu nao queria ter de editar a galeria toda vez que ele quisesse adicionar uma nova foto ou alterar a apresentacao. Pensando em fazer uma ferramenta que possibilite que o fotografo venha a editar a apresentacao do seu slideshow ,sem exigir conhecimentos computacionais, eu criei um componente que lendo um XML numa formatacao especifica, que ainda nao tem um schema para descreve-la, venha a criar um SWF.O resultado e uma ferramenta que converte esse XML:<...slideshow> <...slides> <...slide time="70" > <...image x="110" y="320" src="photo1.jpg" wait="0" stay="20" fadein="20" fadeout="20" /> <.../slide> <...slide time="70" > <...image x="310" y="320" src="photo5.jpg" wait="10" stay="20" fadein="20" fadeout="20" /> <.../slide> <...slide time="100" > <...image x="210" y="220" src="photo2.jpg" wait="0" stay="50" fadein="20" fadeout="30" /> <...image x="510" y="220" src="photo3.jpg" wait="10" stay="40" fadein="20" fadeout="30" /> <...image x="810" y="220" src="photo4.jpg" wait="20" stay="30" fadein="20" fadeout="30" /> <.../slide> <...slide time="100" > <...image x="210" y="220" src="photo2.jpg" wait="0" stay="20" fadein="20" fadeout="30" /> <...image x="510" y="220" src="photo2.jpg" wait="10" stay="20" fadein="20" fadeout="30" /> <...image x="810" y="220" src="photo2.jpg" wait="20" stay="20" fadein="20" fadeout="30" /> <...image x="1110" y="220" src="photo2.jpg" wait="30" stay="20" fadein="20" fadeout="30" /> <...image x="1410" y="220" src="photo2.jpg" wait="40" stay="20" fadein="20" fadeout="30" /> <.../slide> <...slide time="160" > <...image x="1000" y="220" src="photo2.jpg" wait="0" stay="80" fadein="40" 'fadeout="40"/> <.../slide> <.../slides> <.../slideshow>Nessa apresentacao: O codigo fonte desse componente se encontra disponivel no repositorio do projeto assim como o fonte do exemplo.O componente depende do componente CorujaTree que e uma classe para facilitar a manipulacao de XMLs mas, com um pouco de esforco pode ser adaptado para funcionar de modo independente. Ainda sem nome proprio, o template do Inep Zend Framework tem sido uma das partes mais desafiadoras e excitantes de todo o projeto. Por isso resolvi comecar falando logo deste componente.Provavelmente, voce deve estar com alguma(s) das seguintes indagacoes abaixo:PHP precisa de Template?Smarty ja nao e bom o bastante?Sera que vou ter de aprender mais uma linguagem de Template?PHP precisa de Template?E possivel desenvolver bons projetos, de alta complexidade em PHP sem utilizar templates? Sim. Tanto que o Zend Framework vem nativamente sem nenhuma camada de Template. Mas entao, qual e a vantagem do Template? Em linhas gerais, ao se manter a complexidade logica da aplicacao separada do controle da apresentacao se reduz o risco de que mudancas no layout gerem impacto sob a logica da aplicacao e vice-versa. A vantagem da camada de Template e bem similar a vantagem de se dividir o codigo em camadas. Se reduz o acoplamento sem perder a coesao. Com o uso de Templates, o impacto de alteracoes se torna menor e se facilita identificar o local responsavel por um erro. Os pontos negativos tambem sao similares a divisao de camadas, se tem um aumento de complexidade do projeto e um provavel aumento no tempo de processamento.Se a sua empresa tem a divisao entre programadores e designers e quase certo que voce precisa de fazer uso de uma camada de Template ( mesmo que nao esteja fazendo isso ). Se o seu projeto faz uso de mascaras nos elementos de entrada, tais como