Smarty

Tela Software:
Smarty
Detalhes de Software:
Versão: 3.1.5
Data de upload: 11 May 15
Licença: Livre
Popularidade: 1

Rating: nan/5 (Total Votes: 0)

Smarty não é realmente um "Template Engine", que seria mais bem descrita como um "Modelo / Presentation Framework". Ou seja, ele fornece o programador e designer de modelo com uma riqueza de ferramentas para automatizar tarefas comumente tratados na camada de apresentação de um pedido. Sublinho a palavra Framework porque Smarty não é um simples motor de template-substituindo tag. Embora possa ser usado para um propósito tão simples, seu foco está no desenvolvimento e implantação de sua aplicação rápida e indolor, mantendo alto desempenho, escalabilidade, segurança e crescimento futuro.
Então é Smarty certo para você? O que vem para baixo é usar a ferramenta certa para o trabalho. Se você quiser substituição variável simples, você pode querer olhar para algo mais simples ou até mesmo lançar seu próprio. Se você quer uma estrutura de modelagem robusta, com diversas ferramentas para ajudá-lo como seu aplicativo evolui para o futuro, Smarty é provável uma boa escolha.
Por que usá-lo?
Um dos objetivos do projeto Smartys principal é facilitar a separação do código da aplicação de apresentação. Normalmente, o código do aplicativo contém a lógica de negócios do seu aplicativo, escrito e mantido em código PHP. Este código é mantida por programadores. A apresentação é a forma como o conteúdo é apresentado para o usuário final, que é escrito e mantido em arquivos de modelo. Os modelos são mantidos por criadores de modelos.
Na sua função mais básica, o código do aplicativo coleta de conteúdo, atribui-lo para o mecanismo de modelo e exibe-lo. O conteúdo pode ser algo como a manchete, autor e do corpo de um artigo de jornal. O código da aplicação não tem nenhuma preocupação como esse conteúdo será apresentado no modelo. O designer de modelo é responsável pela apresentação. Eles editar os arquivos de modelo, acrescentando marcação e trazendo-a para a conclusão. Isso geralmente envolve coisas como tags HTML, folhas de estilo em cascata e outras ferramentas fornecidas pelo modelo de motor.
Este paradigma serve a vários propósitos:
) Designers não pode quebrar o código do aplicativo. Eles podem mexer com os modelos tudo que eles querem, mas o código permanece intacta. O código será mais apertado, mais seguro e mais fácil de manter.
) Os erros nos modelos de limitarem-se a Smartys rotinas de tratamento de erros, tornando-o mais simples e intuitivo possível para o designer.
) Com apresentação em sua própria camada, os projetistas podem modificar ou completamente redesenhá-lo a partir do zero, tudo sem intervenção do programador.
) Os programadores não estão brincando com modelos. Eles podem ir sobre como manter o código do aplicativo, alterando o conteúdo forma é adquirido, fazendo novas regras de negócios, etc., sem perturbar a camada de apresentação.
) Os modelos são uma representação próxima do que o resultado final será, que é uma abordagem intuitiva. Designers não me importo como o conteúdo tem que o modelo. Se você tiver dados irrelevantes no modelo como uma instrução SQL, isso abre o risco de quebrar o código do aplicativo pela exclusão ou alteração acidental pelo designer.
) Você não está abrindo o seu servidor para a execução de código PHP arbitrário. Smarty tem muitos recursos de segurança construído em desenhadores assim não violar a segurança, seja intencional ou acidental. Eles só podem fazer o que eles estão confinados a nos modelos.
Embora o código do aplicativo é separado da apresentação, isto não significa necessariamente que a lógica é separado. O código da aplicação, obviamente, tem lógica, mas os modelos podem ter uma lógica baseada na condição de que seja apenas para apresentação. Por exemplo, se o designer quer alternar as cores das linhas da tabela ou maiúsculas algum conteúdo atribuído, eles podem. Esta é a lógica de apresentação, algo que o programador não deve se preocupar com. Quantas vezes você já tinha alguma apresentação exibido em uma única coluna e, em seguida, você queria que em duas ou três colunas, de modo que o código do aplicativo precisa ajustar para acomodar isso? Uma abordagem melhor é atribuir o conteúdo de uma única matriz e deixar o modelo de lidar com a apresentação. Isto irá simplificar a sua aplicação e manter seus modelos flexíveis. Smarty fornece as ferramentas para lidar com este tipo de situação.
Isso não significa que o Smarty o impede de colocar lógica de aplicativo no modelo, você tem que ter um pouco de auto-disciplina. Aqui está um exemplo de incorporação de lógica de negócios no modelo (isso mesmo, evitar fazer isso, se possível):
{If $ smarty.session.user e ($ user_type eq "editor" ou $ user_type eq "admin")}
editar
{/ If}
As verificações de lógica, se o usuário está conectado e eles são ou um editor ou administrador, então eles estão autorizados a editar isso para a caixa de edição aparece. Isto é lógica que pertence ao código de aplicação. O modelo não se importa com o que as credenciais deste usuário tem, ele só precisa saber se a caixa de edição é exibido ou não! Então, vamos olhar para uma abordagem mais adequada:
{If $ edit_flag}
editar
{/ If}
Cabe ao programador da aplicação para atribuir a $ edit_flag, um simples e fácil de entender variável no modelo. Desta forma, o modelo não é mais depender de sua estrutura de dados subjacente. Se o formato da estrutura de dados sessão nunca muda, nada precisa ser ajustado no modelo.
Agora vamos olhar para algumas coisas que você pode fazer com Smarty. Uma coisa que pode fazer é funções personalizadas. Estas são marcas no modelo que executam uma determinada tarefa. Exemplo:
{File html_image = "masthead.gif"}
Aqui nós temos uma função chamada "html_image". Esta função tem a imagem dada no atributo "arquivo" e faz todo o trabalho necessário para chegar com o seguinte código HTML:

A função de imagem fez a tarefa de descobrir a altura ea largura e fornecendo a bandeira fronteira padrão. Claro que você pode simplesmente usar a tag HTML estático no modelo em vez disso, mas isso demonstra como uma função personalizada pode ser utilizada para simplificar uma tarefa muito comum. O designer pode se concentrar no projeto e menos sobre o material técnico. Além disso, se o designer decide retirar uma imagem em tamanho mastro diferente dentro, o modelo não necessita de ajuste.
html_image é uma função que vem com Smarty. Você também pode fazer suas próprias funções personalizadas. Aqui está outro exemplo do que se pode parecer:
{Type = html_link "artigo" id = "abc123" text = "Fogo tira Hotel"}
Isso é usar uma função personalizada chamada "html_link". Ele vem com o seguinte código HTML:
Fire tira Hotel
O que isso realizar? Por um lado, o designer não precisa se preocupar com o formato de uma URL para um artigo. Com URLs codificados, o que acontece se um dia o programador decide limpar as coisas, e altera a sintaxe de URL a partir de /display_article.php?id=abc123 / ART / abc123? Nós teríamos que editar cada modelo com uma URL artigo. Este é apenas mais um exemplo de como uma função de modelo pode fazer modelos mais fáceis de manter.
Agora, para um pouco de programadores e modelos. Anteriormente, foi mencionado que o programador não tem cuidado para que os modelos ver com o conteúdo. Em um nível conceitual isso é verdade, mas no mundo real você não vai esperar que o designer de modelo ter que construir todos os modelos fora do ar. Afinal de contas, a lógica de negócios faz determinar qual conteúdo é atribuído aos modelos. Assim, o programador normalmente modelos de esqueleto de configuração para o designer para começar. Isso geralmente contém os elementos crus, como variáveis ​​de conteúdo e loops de seção e talvez algumas tags de marcação simples para que eles não começar com o conteúdo em uma grande confusão. Aqui está um exemplo de um modelo de esqueleto que percorre uma lista de artigos e os exibe em uma tabela:


{Section name = loop de arte = $ article}


{/ Seção}
{$ artigo [de arte] .headline}
{$ artigo [de arte] .Data}
{$ artigo [de arte] .author}

A saída pode ser algo como isto:







A Conquista do Oeste
02 de dezembro de 1999
John Wayne
Team perde, o treinador é encerrado
2 de fevereiro de 2002
John Smith
Culinária Gourmet
23 de janeiro de 1954
Betty Crocker

Agora, para algumas perguntas comuns:
Por que usar modelos em tudo? O que é tão difícil de escrever Em vez de {$ title}?
Tornar as coisas mais fáceis de ler não era um objetivo de design, mas mais de um efeito colateral. Usando modelos tem enormes benefícios, muitos dos quais foram explicadas acima. Uma vez que estamos em um ambiente de modelo de qualquer maneira, {$ title} é menos estranha do que , Especialmente quando você começar a olhar para ele em longas páginas de conteúdo, por isso era bastante evidente que uma sintaxe mais simples ajuda a fazer modelos mais fácil de ler e manter.
Template ter tempo para analisar, fazer aplicações muito mais lento.
Isso pode ser verdade em alguns casos, mas com Smarty não é mais lenta do que a execução de um script PHP. Na primeira execução de um modelo, Smarty converte os arquivos de modelo em scripts PHP (chamado modelo de compilação.) Em seguida, o script PHP é apenas incluído. Junte isso com um acelerador de PHP e você realmente tem um ambiente de templates rápido com sobrecarga mínima.
Smarty é muito complicado, como pode ser tão rápido?
Núcleo da Smarty é muito magra considerando o que ele é capaz. A maior parte de sua funcionalidade encontra-se em plugins. A arquitetura de plugin é projetado para que apenas os plugins necessários são carregados sob demanda. Com este quadro, acrescentando ainda centenas de novos plugins não afetará o desempenho. Isso faz com que Smarty rápido, escalável e flexível.
Smarty também tem recursos de armazenamento em cache que podem atualizar e manter partes da página sem cache no seu gosto dinamicamente. Cache armazena a saída dos modelos compilados, poupando a necessidade de executá-los em cada chamada.
Toda essa conversa sobre aceleradores, como é que Smarty executado sem um?
Na verdade ele é executado muito bem sem ele. O Smarty não requer um acelerador, mas o modelo se arquiva irá tirar partido de um, algo que é exclusivo para Smarty (AFAIK). Se você não tiver um acelerador, a execução do modelo não é tão rápido, mas não lento, por qualquer meio, uma vez que não são analisados! Você também reter todos os outros benefícios e características do Smarty. Além disso, uma vez que os aceleradores são livremente disponíveis lá não é realmente uma desculpa para não estar usando um. Eles vão ajudar o desempenho com todos os aplicativos PHP, usando Smarty ou não.
Como é que pode ser mais fácil de manter?
Algumas coisas não podem ser explicadas, mas apenas experiente. O benefício da separação entre a lógica do aplicativo a partir da apresentação não pode ser suficiente sublinhado. Smarty também tem algumas características de tratamento de erros agradáveis ​​e um built-in console de depuração para que você possa ver a hierarquia do modelo e variáveis ​​atribuídas num ápice. Adicionando recursos personalizados para Smarty é tão fácil quanto soltando-os no diretório plugin e mencioná-los no modelo.
As tags de template não são XML baseado, meu editor não gosta disso.
O {} delimitadores são apenas um padrão, eles são fáceis de discernir entre tags HTML. Se você não gosta deles, mudar seus delimitadores ou talvez algo mais como XMLish Há também grande quantidade de contribuições dos usuários para o Dreamweaver e similares, dar-lhes uma olhada na área de contribs.
Isso é Smarty em poucas palavras, espero que você pode adicionar ao seu arsenal de ferramentas para a construção de aplicações web. Para realmente saber mais, leia o manual do topo para baixo, participar dos fóruns e ver o que as pessoas estão discutindo

Recursos :.

  • Cache: Smarty oferece recursos de armazenamento em cache de grão fino para armazenamento em cache a totalidade ou parte de uma página web prestados, ou deixando partes uncached. Os programadores podem registrar funções como modelo em cache ou não-cachable, grupo páginas em cache em unidades lógicas para uma gestão mais fácil, etc.
  • Arquivos de configuração: Smarty pode atribuir variáveis ​​extraídos de arquivos de configuração. Os criadores de modelos podem manter os valores comuns a vários modelos em um local sem a intervenção do programador, e variáveis ​​de configuração podem ser facilmente compartilhados entre a programação e apresentação partes do aplicativo.
  • Segurança: os modelos não contêm código PHP. Portanto, um designer de modelo não é desencadeada com o pleno poder de PHP, mas apenas o subconjunto de funcionalidades que lhes seja disponibilizada a partir do programador (código de aplicativo).
  • Fácil de usar e manter: designers de páginas da Web não está lidando com a sintaxe do código PHP, mas em vez disso uma sintaxe de templates de fácil utilização não é muito diferente do que HTML simples. Os modelos são uma representação muito perto da saída final, encurtando drasticamente o ciclo de design.
  • Modificadores de variáveis: O conteúdo das variáveis ​​atribuídas podem ser facilmente ajustadas em tempo de exibição com modificadores, como a exibição em todas maiúsculas,, formatação de datas, truncando blocos de texto, acrescentando espaços entre os caracteres, etc. Novamente escapou-html , isso é feito sem intervenção do programador.
  • Funções Modelo: Muitas funções estão disponíveis para o designer de modelo para lidar com tarefas como gerar segmentos de código HTML (Dropdowns, tabelas, pop-ups, etc.), a exibição de conteúdo de outros modelos em linha, um loop sobre matrizes de conteúdo , formatação de texto para saída de e-mail, ciclismo embora cores, etc.
  • Filtros:. O programador tem o controle completo da produção do modelo e conteúdo de modelo compilado com pré-filtros, pós-filtros e filtros de saída-
  • Recursos:. Os modelos podem ser puxado a partir de qualquer número de fontes, criando novos manipuladores de recursos, em seguida, usá-los nos modelos
  • Plugins: Quase todos os aspectos da Smarty é controlado através do uso de plugins. Eles são geralmente tão fácil quanto soltando-os para o diretório de plug-in e, em seguida, mencioná-los no modelo ou usá-los no código do aplicativo. Muitas contribuições do usuário na comunidade também estão disponíveis. (Veja a seção plugins do fórum e wiki.)
  • Add-ons: Many-comunidade de usuários contribuíram Add-ons estão disponíveis, como a paginação, validação de formulário, Menus suspensa, Calander Data Catadores, etc. Essas ferramentas ajudam a acelerar o ciclo de desenvolvimento, não há necessidade de re- inventar a roda ou código de depuração que já é estável e pronto para implantação. (Consulte a seção Add-ons do fórum e wiki.)
  • Depuração:. Smarty vem com um built-in de depuração console para o designer do template pode ver todas as variáveis ​​atribuídas eo programador pode investigar velocidades modelo processamento
  • Compilação:. Smarty compila modelos em código PHP nos bastidores, eliminando análise de tempo de execução de modelos
  • Performance: Smarty executa muito bem, apesar de seu vasto conjunto de recursos. A maioria das capacidades do Smarty mentir em plugins que são carregados sob demanda. Smarty vem com inúmeras ferramentas de apresentação, minimizando o código do aplicativo e resultando em mais rápido, menos propenso a erros aplicativo de desenvolvimento / implantação. Templates Smarty se compilado para arquivos PHP internamente (uma vez), eliminando dispendiosas verificações de arquivos modelo e aproveitando a velocidade de PHP aceleradores op-código.

O que é novo nesta versão:

  • reverter as alterações de acesso super-globais, e em vez disso contam com USE_SUPER_GLOBALS para segurança

O que é novo na versão 2.6.23:

  • backticks tira de matemática} {equações (mohrt)
  • lance de erro quando template existe, mas não legível (mohrt)

O que é novo na versão 2.6.22:

  • Esta versão resolve um problema encontrado com o Smarty 2.6 0,21 liberação e um bug motor PCRE em PHP 5.2. Encadeamento de método foi removido para evitar o erro. Encadeamento de método vai voltar a aparecer no Smarty 3.

Outro software de desenvolvedor New Digital Group, Inc.

Smarty
Smarty

13 Apr 15

Comentário para Smarty

Comentários não encontrado
Adicionar comentário
Ligue imagens!