From b2da073954981c397acaac0d2728f8d6c2b48df5 Mon Sep 17 00:00:00 2001 From: mohrt Date: Tue, 21 Sep 2004 15:05:45 +0000 Subject: [PATCH] committing portuguese docs updates from Thomas Gonzalez Miranda --- docs/pt_BR/appendixes/resources.xml | 4 +- docs/pt_BR/appendixes/tips.xml | 382 +++++++++--------- docs/pt_BR/appendixes/troubleshooting.xml | 19 +- docs/pt_BR/bookinfo.xml | 3 + .../designers/chapter-debugging-console.xml | 43 +- docs/pt_BR/designers/config-files.xml | 95 +++-- .../pt_BR/designers/language-basic-syntax.xml | 15 +- .../language-basic-syntax/language-math.xml | 9 +- .../language-syntax-attributes.xml | 27 +- .../language-syntax-comments.xml | 25 +- .../language-syntax-functions.xml | 30 +- .../language-syntax-quotes.xml | 31 +- .../designers/language-builtin-functions.xml | 8 +- .../language-combining-modifiers.xml | 37 +- .../designers/language-custom-functions.xml | 4 +- docs/pt_BR/designers/language-modifiers.xml | 69 ++-- docs/pt_BR/designers/language-variables.xml | 18 +- docs/pt_BR/getting-started.xml | 176 ++++---- docs/pt_BR/preface.xml | 104 +++-- 19 files changed, 558 insertions(+), 541 deletions(-) diff --git a/docs/pt_BR/appendixes/resources.xml b/docs/pt_BR/appendixes/resources.xml index 99cbd876..544e82c1 100644 --- a/docs/pt_BR/appendixes/resources.xml +++ b/docs/pt_BR/appendixes/resources.xml @@ -6,8 +6,8 @@ A homepage do Smarty está localizada em &url.smarty;. - Você pode entrar na lista de email enviando um e-mail para - &ml.general.sub;. Um arquivo da lista de e-mail pode ser + Você pode entrar na lista de discussão enviando um e-mail para + &ml.general.sub;. O arquivo da lista de discussão pode ser visto em &url.ml.archive;. diff --git a/docs/pt_BR/appendixes/tips.xml b/docs/pt_BR/appendixes/tips.xml index 0c69c5f4..c998b399 100644 --- a/docs/pt_BR/appendixes/tips.xml +++ b/docs/pt_BR/appendixes/tips.xml @@ -7,53 +7,56 @@ Manipulação de Variável Vazia - Quando você quer algumas vezes imprimir um valor que você definir para uma variável vazia - ao invés de imprimir nada, tal como imprimindo "&nbsp;" a fim de que plano de fundo de tabelas - funcionem corretamente. Muitos usariam uma instrução {if} para manipular isto, mas há um - macete com o Smarty, usando o modificador de variável - default. + Há momentos que você quer mostrar um valor padrão para uma variável vazia ao invés de não mostrar nada, + tal como mostrar "&nbsp;" para que os planos de fundo de tabelas funcionem corretamente. Muitos + usariam uma instrução {if} para fazer isso, mas há um macete que pode ser feito usando-se o + modificador de variável padrão do Smarty. Imprimindo &nbsp; quando uma variável está vazia - + +{$titulo|default:"&nbsp;"} +]]> + - Manipulação do valor padrão de Variável + Manipulação do valor padrão de uma Variável - Se uma variável é usada freqüentemente em seus templates, aplicando o modificador - default toda vez que ela é mencionado pode evitar um bit desagradável. Você pode remediar isto - pela atribuição de um valor padrão para a variável com a função - assign. + Se uma variável é usada freqüentemente e seus templates, aplicar o modificador de variável + padrão toda vez pode se tornar algo muito desagradável. Você pode evitar + isto atribuindo um valor padrão para a variável usando a função assign. Atribuindo o valor padrão para uma variável de template -{* faça isto em algum lugar no topo de seu template *} + +{$titulo} +]]> + Passando a variável titulo para o template de cabeçalho - Quando a maioria de seus templates usam os mesmos cabeçalhos e mesmos rodapés, é + Quando a maioria de seus templates usam os mesmos cabeçalhos e mesmos rodapés, é comum dividi-los um em cada template e então incluí-los. Mas o que fazer se o cabeçalho precisa ter um titulo diferente, dependendo de que página ele está vindo? Você pode passar o titulo para o @@ -62,91 +65,108 @@ Passando a variável titulo para o template de cabeçalho - -mainpage.tpl + + +{$title|default:"BC News"} + + footer.tpl ---------- -</BODY> -</HTML> + + +]]> + - - Quando a página principal é atraída, o título da "Página Principal" é passado para o template - header.tpl, e será subseqüencialmente usado com o título. Quando a página de arquivamento é atraída, - o título será "Archives". Note no exemplo de archive, nós estamos usando uma variável do arquivo - archives_page.conf ao invés de uma variável codificada rígida. - Também note que "BC news" é exibida se - a variável $titulo não está definida, - usando o modificador de variável default. + + Quando a página for extraída, o título da "Página Principal" é passado ao template 'cabecalho.tpl', + e será imediatamente usado como título da página. Quando a página de arquivos é extraída, o título + muda para "Arquivos". No que no exemplo de arquivos, nós estamos usando uma variável que vem do + arquivo 'pagina_arquivos.conf' ao invés de uma variável definida no código. Note também que "BC News" + é mostrado somente se a variável $titulo não conter valor algum, isto é feito usando-se o modificador + de variáveis padrão. Datas - Como uma regra básica, sempre passe datas para o smarty como timestamps. Isto permite ao - desenhista de template utilizar date_format - para controle completo sobre a formatação de data, - e também facilita a comparação de datas se - necessário. + Em geral, sempre envie datas ao Smarty no formato timestamp. Deste modo o desginer do template + pode usar o modificador date_format + para ter um controle total sobre a formatação da data, e também facilita a comparação de datas + se necessário. - NOTA: No Smarty 1.4.0, você pode passar datas para o Smarty como timestamps unix, - mysql, ou qualquer outra data interpretável por strtotime(). + Nota: No Smarty 1.4.0, você pode enviar datas ao Smarty no formato unix timestamp, + mysql timestamp, ou qualer outra data que possa ser lida pela função strtotime(). - -Usando date_format - + + usando date_format + + + + + Irá mostrar: + + + + + + + + + Irá mostrar: + + + - +]]> + + + + + - Quando usando {html_select_date} em um template, o programador normalmente vai querer converter - a saída de um formulário de volta para o formato de timestamp. Aqui está uma função para ajudar - com isso. + Quando se está usando {html_select_date} em um template, o programador normalmente vai querer + converter a saída de um formulário de volta para o formato timestamp. Abaixo está uma função + que irá ajudá-lo à fazer isto. -Convertendo elementos em forma de data de volta para um timestamp - -// isto assume que a forma de seus elementos são nomeadas como +Convertendo datas de volta ao formato timestamp + + +} +?> +]]> + WAP/WML - Os templates WAP/WML requerem um cabeçalho de Content-Type de PHP para ser passado junto com - template. A forma mais fácil de fazer isto seria escrever uma função customizada que imprime - o cabeçalho. Se você está usando sistema de caching, esse não funcionará, então nós faremos isso - usando a tag de insert (lembre que tags de insert não são "cached!") Certifique-se que não há saída - para o navegador antes do template, - senão o cabeçalho irá falhar. + Os templates WAP/WML exigem um cabeçalho com o tipo de conteúdo (Content-Type) PHP para serem + passados junto com o template. O modo mais fácil de se fazer isso seria escrever uma função + personalizada que envia-se este cabeçalho. Se você está usando cache, isto não irá funcionar, + então nós faremos isso usando a tag insert (lembre-se que tags de insert não são guardadas no cache!). + Certifique-se de que nada é enviado ao navegador antes do template, caso contrário o cabeçalho não irá + funcionar. Usando insert para escrever um cabeçalho WML Content-Type - -// esteja certo que o apache está configurado para as extensões .wml ! -// ponha esta função em algum lugar de sua aplicação, ou em Smarty.addons.php -function insert_header() { - // esta função espera o argumento $content - extract(func_get_arg(0)); - if(empty($content)) - return; - header($content); - return; + + +]]> + + +seu template do Smarty deve começar com a tag insert, veja o exemplo à seguir: + + + + -<!-- begin new wml deck --> -<wml> -<!-- begin first card --> -<card> -<do type="accept"> -<go href="#two"/> -</do> -<p> + + + + + + + +

Bem-vindo ao WAP com Smarty! -Pressione OK para continuar... -</p> -</card> -<!-- begin second card --> -<card id="two"> -<p> +Pressione OK para continuar... +

+
+ + +

Bem fácil isso, não é? -</p> -</card> -</wml> +

+
+
+]]> +
Templates componentizados - Esta dica é um pouco de hack, mas ainda é uma idéia limpa. - Use-a por seu próprio risco. ;-) - - - Tradicionalmente, programar templates em suas aplicações segue esta forma: - Primeiro, você acumula suas variáveis dentro de sua aplicação PHP, (talvez com requisições - de banco de dados.) Então, você instancia seu objeto Smarty, atribui valores às variáveis - e exibe o template. Por exemplo nós temos um registrador de estoque em nosso template. - Nós coletaríamos os dados estocagem em nossa aplicação, então damos valor a estas variáveis - no template e o exibimos. Agora isso seria legal - se você adicionasse este registrador de - armazenamento (stock ticker) para qualquer aplicação simplesmente incluindo o template, e sem - se preocupar com a busca de dados mais a frente? + Tradicionalmente, programar templates para suas aplicações é feito da seguinte maneira: + Primeiro, você guardar suas variáveis junto com a aplicação PHP, (talvez obtendo-as de consultas + à banco de dados). Após, você instancia seu objeto Smarty, atribui valores às variáveis e + mostra o template. Digamos que nós temos um registrador de estoque em nosso template. Nós + coletaríamos os dados do estoque em nossa aplicação, e então atribuíriamos valores as variáveis + referentes à ele no template e depois exibiríamos o template na tela. Agora não seria legal + se você pudesse adicionar este registrador de esto em qualquer aplicação simplesmente incluindo + um template nela, e sem se preocupar com a busca dos dados futuramente? - Você pode embutir o PHP dentro de seus templates com as tags {php}{/php}. - Com isto, você pode configurar templates independentes, tendo a sua própria - estrutura de dados para dar valor às suas próprias variáveis. Com a lógica embutida - dessa forma, você pode manter a lógica do template & junto. Desta maneira não é - importante de onde o fonte do - template está vindo, ele está sempre junto como um componente. + Você pode fazer isto escrevendo um plugin personalizado que obteria o + conteúdo e atribuiria ele à uma variável definida no template. Template componentizado - -{* Smarty *} + +assign("ticker_name",$ticker_name); - $this->assign("ticker_price",$ticker_price); - -{/php} - -Nome do Estoque: {$ticker_name} Preço do Estoque: {$ticker_price} - - - No Smarty 1.5.0, há até uma forma mais limpa. Você pode incluir o php em seus templates com - a tag {include_php ...}. - Desta forma você pode manter a lógica do PHP separada da lógica do - template. Veja a função include_php para - mais informação. - - -Template componentizado com include_php - -load_ticker.php ---------------- - -<?php - // configura nossa função para buscar os dados armazenados - function fetch_ticker($symbol,&$ticker_name,&$ticker_price) { - // ponha aqui a lógica que procura $ticker_name - // e $ticker_price de algum recurso - } - - // chama a função - fetch_ticker("YHOO",$ticker_name,$ticker_price); - - // passar valores para as variáveis de template - $this->assign("ticker_name",$ticker_name); - $this->assign("ticker_price",$ticker_price); -?> +// coloque o arquivo "function.load_ticker.php" no diretório plugin +// configura nossa função para pegar os dados do estoque +function fetch_ticker($symbol) +{ + // coloque a lógica que obtém os dados de + // algum recurso e guarde na variável $ticker_info + return $ticker_info; +} +function smarty_function_load_ticker($params, &$smarty) +{ + // chama a função + $ticker_info = fetch_ticker($params['symbol']); + + // atribuite o valor à uma variável no template + $smarty->assign($params['assign'], $ticker_info); +} +?> +]]> + + + +Nome no estoque: {$ticker.name} Preço no estoque: {$ticker.price} +]]> + Ofuscando endereços de E-mail - Você deseja saber como seu endereço de E-mail consegue entrar em tantas listas de email de spam? - A única forma de spammers coletar endereços de E-mail é de páginas da web. Para ajudar a combater - este problema, você pode fazer o seu endereço de E-mail aparecer em javascript misturado no - código HTML, mesmo assim ele aparecerá e funcionará corretamente no navegador. Isto é feito com - o plugin mailto. + Você já se espantou como seu endereço de E-mail entra em tantas listas de spam? + A única forma dos spammers coletarem seu(s) endereço(s) de E-mail(s) é de páginas web. + Para ajudar à combater este problema, você pode fazer seu endereço de E-mail aparecer em javascript + misturado em código HTML, e ainda assim ele irá aparecer e funcionar corretamente no navegador. + Isto é feito com o plugin chamado 'mailto'. Exemplo de ofuscamento de um Endereço de E-mail - + Nota técnica Este método não é 100% a prova de falha. Um spammer poderia criar um programa - para coletar o e-mail e para decodificar estes valores, mas não é muito comum. + para coletar o e-mail e decodificar estes valores, mas é muito pouco provável. diff --git a/docs/pt_BR/appendixes/troubleshooting.xml b/docs/pt_BR/appendixes/troubleshooting.xml index f2bed483..1292454e 100644 --- a/docs/pt_BR/appendixes/troubleshooting.xml +++ b/docs/pt_BR/appendixes/troubleshooting.xml @@ -4,11 +4,10 @@ Localização de Erros - erros de Smarty/PHP + Erros do Smarty/PHP O Smarty pode obter muitos erros tais como, atributos de tags perdidos ou nomes de variáveis - mal formadas. Se isto acontece, você verá - um erro como segue: + mal formadas. Se isto acontece, você verá um erro similar ao seguir: @@ -28,9 +27,9 @@ Fatal error: Smarty: [in index.tpl line 28]: syntax error: missing section name - Há certos erros que o smarty não pode entender, tais como um um fechamento de tags errado. - Estes tipos de erros normalmente - termina na interpretação de erros do tempo de compilação do PHP. + Há certos erros que o Smarty não consegue detectar, tais como uma tag de fechamento errada. + Estes tipos de erro geralmente acabam gerando erros em tempo de processamento do interpretador + de erros do PHP. @@ -44,10 +43,10 @@ Parse error: parse error in /path/to/smarty/templates_c/index.tpl.php on line 75 script PHP compilado, não o template em si. Normalmente você pode no template localizar o erro de sintaxe. Aqui algumas coisas para você procurar: falta de fechamento de tags para {if}{/if} ou - {section}{/section}, ou sintaxe da lógica dentro de uma tag {if}. - Se você não encontra o erro, você pode ter - que abrir o arquivo PHP compilado e ir até o numero da linha exibido, no local onde o erro correspondente - está no template. + {section}{/section}, ou erro de lógica dentro de uma tag {if}. + Se você não conseguir encontrar o erro, talvez seja necessário abrir + o arquivo PHP compilado e ir até o número da linha exibido, para saber + onde se encontra o erro correspondente no template. diff --git a/docs/pt_BR/bookinfo.xml b/docs/pt_BR/bookinfo.xml index c31abf5d..03dee311 100755 --- a/docs/pt_BR/bookinfo.xml +++ b/docs/pt_BR/bookinfo.xml @@ -21,6 +21,9 @@ TanielFranklin <taniel@ig.com.br> + + ThomasThomas Gonzalez Miranda <thomasgm@php.net> + &build-date; diff --git a/docs/pt_BR/designers/chapter-debugging-console.xml b/docs/pt_BR/designers/chapter-debugging-console.xml index 658236e8..d1aed94e 100644 --- a/docs/pt_BR/designers/chapter-debugging-console.xml +++ b/docs/pt_BR/designers/chapter-debugging-console.xml @@ -3,36 +3,35 @@ Debugging Console - Há um console para debug incluso no Smarty. O console informa a você de - todos os templates incluídos, variáveis definidas e variáveis de arquivos de configuração - da chamada atual do template. Um template chamado "debug.tpl" - é incluso com a distribuição do Smarty o qual controla a formatação - do console. Defina $debugging para true no Smarty, e se necessário defina $debug_tpl - para o caminho de recurso de debug.tpl (isto é SMARTY_DIR por - padrão.) Quando você carrega uma página, um console em javascript irá abrir uma - janela popup e dar a você o nome de todos os templates incluídos e as variáveis definidas - para a página atual. Para ver as variáveis disponíveis para um template - em particular, veja a função {debug}. - Para desabilitar o console de debug, defina $debugging para - false. Você pode ativar temporariamente o console de debug colocando - SMARTY_DEBUG na URL se você ativou esta opção com $debugging_ctrl. + Há um console para debug incluso no Smarty. O console informa à você todos + os templates incluídos, variáveis definidas e variáveis de arquivos de + configuração do template atual. Um template chamado "debug.tpl" está + incluso com a distribuição do Smarty o qual controla a formtação do console. + Defina a variável $debugging para true no Smarty, e se necessário defina + $debug_tpl com o caminho do diretório onde está o arquivo debug.tpl (o diretório padrão + é o da constante SMARTY_DIR). Quando você carrega uma página, um javascript abre uma + janela pop-up e fornece à você o nome de todos os templates incluídos e variáveis definidas + ara a página atual. Para ver as variáveis disponíveis para um template específico, + veja a função {debug}. Para desabilitar + o console de debug, defina a variável $debugging para false. Você também pode ativar + temporariamente o console de debug colocando na URL, caso você tenha ativado esta opção + na variável $debugging_ctrl. Nota Técnica - O console de debug não funciona quando você usa a API fetch(), - apenas quando estiver usando display(). É um conjunto de comandos javascript - adicionados ao final do template gerado. Se você não gosta de javascript, - você pode editar o template debug.tpl para formatar a saída como você quiser. - Dados de debug não são guardados em cache e os dados de debug.tpl - não são incluídos no console de debug. + O console de debug não funciona quando você usa a API fetch(), + somente quando você estiver usando display(). Isto é um conjunto de comandos + em javascript adicionados ao final do template gerado. Se você não gosta de javascript, + você pode editar o template debug.tpl para exibir saída no formato que você quiser. + Dados do debug não são armazenados em cache e os dados do debug.tpl não são + inclusos no console de debug. - Os tempos de carregamento de cada template e arquivo de cofiguração são em segundos, - ou então frações. + O tempo de carregamento de cada template e arquivo de configuração são exibidos em + segundos, ou então frações de segundo. diff --git a/docs/pt_BR/designers/config-files.xml b/docs/pt_BR/designers/config-files.xml index a5629228..858e3e36 100644 --- a/docs/pt_BR/designers/config-files.xml +++ b/docs/pt_BR/designers/config-files.xml @@ -3,69 +3,68 @@ Arquivos de Configuração - Arquivos de configuração são úteis para designers gerenciarem váriaveis - globais para os templates a partir de um arquivo. Um exemplo são as cores do template. Normalmente se - se você quer mudar o tema de cores para uma aplicação, você deve ir - em cada um dos arquivos de template e mudar as cores. Com - um arquivo de configuração, as cores podem ser mantidas em um lugar, e apenas - um arquivo precisa ser atualizado. + Arquivos de configuração são úteis para designers que gerenciam variáveis globais + para os templates à partir de um arquivo. Um exemplo são as cores do template. + Normalmente se você quisesse mudar o tema de cores de uma aplicação, você teria + que abrir cada arquivo de template e alterar as cores. Com arquivos de configurações, + as cores podem ser armazenadas em um lugar, e apenas um arquivo precisaria ser alterado. - Examplo de sintaxe de um arquivo de configuração + Exemplo de sintaxe de um arquivo de configuração -# global variables -pageTitle = "Main Menu" -bodyBgColor = #000000 -tableBgColor = #000000 -rowBgColor = #00ff00 + +# seção invisível +[.BancoDeDados] +host=meu.dominio.com +bd=LIVRODEVISITAS +usuario=usuario-php +senha=foobar +]]> + - Valores de variáveis podem estar entre aspas, mas não é necessário. - Você pode usar aspas simples ou duplas. Se você tiver um valor que - ocupe mais de uma linha, coloque todo o valor entre três aspas - ("""). Você pode colocar comentários em um arquivo de configuração com qualquer sintaxe - que não seja válida em um arquivo de configuração. Nós recomendamos usar um # - (cancela) no ínicio de cada linha. + Valores de variáveis de arquivos de configuração pode estar entre aspas, + mas não é necessário. Você pode usar tanto aspas simples como duplas. + Se você tiver um valor que ocupe mais de uma linha, coloque-o dentre três aspas + ("""). Você pode colocar comentários em arquivos de configuração com qualquer + sintaxe que não é válida para um arquivo de configuração. Nós recomendamos usar um + # (cancela) no início de cada linha que contém o comentário. - Este arquivo de onfiguração tem duas seções. Nomes de seções devem estar entre conchetes - []. Nomes de seção podem ser string arbritraria que não contenham os símbolos - [ ou ]. As quatro variáveis no top são - variáveis globais, ou variáveis sem seção. - Estas variáveis são sempre carregadas do arquivo de configuração. Se uma seção em - particular for carregada, então as variáveis globais e as variáveis desta seção são carregadas. - Se uma variável existir como global e dentro de uma seção, - a variável da seção será utilizada. Se você tiver duas variáveis na mesma seção com o mesmo nome, - a última será utilizada. + Este arquivo de configuração tem duas seções. Nomes de seções devem estar entre conchetes []. + Nomes de seção podem ser string arbritraria que não contenham os símbolos + [ ou ]. As quatro variáveis no topo são variáveis globais, + ou variáveis que não pertencem à uma seção. Estas variáveis sempre são carregadas do arquivo de + configuração. Se uma seção em particular é carregada, então as variáveis globais e as variáveis + desta seção também são carregadas. Se uma variável de seção e global já existirem, + a variável de seção será utilizada. Se você tiver duas variáveis na mesma seção com o mesmo nome, + a última será utilizada. - Arquivos de configuração são carregados no template com a função embutida - config_load. + Arquivos de configuração são carregados no template usando a função embutida config_load. - Você pode esconder variáveis ou seções inteiras colocando um ponto - antes do nome da variável. Isto é útil se a sua aplicação - se arquivos de configuração e lê dados sensíveis a partir deles - que a ferramenta de template não precisa. Se você tem terceiros fazendo a edição de templates, - você terá certesa que eles não leiam dados sensíveis - do arquivo de configuração carregando ele no template. + Você pode esconder as variáveis ou uma seção inteira colocando um ponto + antes do nome da seção ou variávei. Isso é útil em casos no qual sua aplicação lê + arquivos de configuração e obtém dados sensíveis que não são necessários para o sistema + de templates. Se a edição de seus templates é terceirizada, você terá certeza que eles não + irão ler os dados sensíveis do arquivo de configuração que é carregado no template. - Funções Embutidas + Funções internas - O Smarty vem com várias funções embutidas. Funções embutidas fazem parte - da linguagem de template. Você não pode criar funções personalizadas com - o mesmo nome, nem pode modificar as funções embutidas. + O Smarty contém várias funções internas. Funções internas são parte integral + da linguagem de template. Você não pode criar funções personalizadas com o + mesmo nome de uma função interna, e também não pode modificar funções internas. &designers.language-builtin-functions.language-function-capture; diff --git a/docs/pt_BR/designers/language-combining-modifiers.xml b/docs/pt_BR/designers/language-combining-modifiers.xml index f7428b4c..8fbb446c 100644 --- a/docs/pt_BR/designers/language-combining-modifiers.xml +++ b/docs/pt_BR/designers/language-combining-modifiers.xml @@ -3,18 +3,20 @@ Combinando Modificadores - Você pode aplicar qualquer número de modificadores para uma variável. Eles serão - aplicados na ordem que eles foram combinados, da esquerda para a direita. Eles - devem ser separados com um caractere | (pipe). + Você pode aplicar a quantidade de moficadores que quiser à uma variável. Eles serão aplicados + na ordem em que foram combinados, da esquerda para direita. Eles devem ser separados + com o caracter | (pipe). - - Combinando Modificadores - + + combinando modificadores + +assign('articleTitle', 'Smokers are Productive, but Death Cuts Efficiency.'); +$smarty->display('index.tpl'); +?> index.tpl: @@ -23,16 +25,21 @@ index.tpl: {$articleTitle|lower|spacify|truncate} {$articleTitle|lower|truncate:30|spacify} {$articleTitle|lower|spacify|truncate:30:". . ."} - - -MOSTRA: - +]]> + + + O texto acima mostrará: + + + - +s m o k e r s a r e p. . . +]]> + + - Um dos aspectos únicos sobre o Smarty é a compilação do template. Isto significa que o - Smarty lê os arquivos de template e cria scripts PHP a partir deles. Uma vez criados, eles - são executados. Então não há interpretação de arquivo de - template custosa para cada pedido, e - cada template pode levar total vantagem de soluções de cache de compiladores PHP tais como - Zend Accelerator (&url.zend;) ou PHP Accelerator + Um dos aspectos únicos do Smarty é seu sistema de compilação de templates. O Smarty lê os arquivos + de templates e cria scripts PHP à partir deles. Uma vez criados, eles são executados sem ser necessário + uma outra compilação do template novamente. Com isso, os arquivos de template não são 'parseados'(analisados) + toda vez que um template é solicitado, e cada template tem a total vantagem de soluções de cache do + compilador PHP, tais como: Zend Accelerator (&url.zend;) ou PHP Accelerator (&url.php-accelerator;). @@ -47,25 +51,16 @@ Ele é extremamente rápido. - Ele é eficiente visto que - o interpretador de PHP faz o trabalho mais chato. + Ele é eficiente visto que o interpretador do PHP faz o trabalho mais pesado. Sem elevadas interpretações de template, apenas compila uma vez. - Ele está atento para só recompilar os arquivos de template que - foram mudados. - Você pode criar funções customizadas - e modificadores de variáveis - customizados, de modo que a linguagem de template é extremamente extensível. - Sintaxe de tag delimitadora de template configurável, assim você pode usar - {}, {{}}, <!--{}-->, etc. - Os construtoress if/elseif/else/endif são passados para o interpretador de PHP, - assim a sintaxe de expressão {if ...} pode ser tanto simples quanto complexa da forma que você - queira. + Ele está atento para só recompilar os arquivos de template que foram mudados. + Você pode criar funções customizadas e modificadores de variáveis customizados, de modo que a linguagem de template é extremamente extensível. + Delimitadores de tag configuráveis, sendo assim você pode usar {}, {{}}, <!--{}-->, etc. + Os construtoress if/elseif/else/endif são passados para o interpretador de PHP, assim a sintaxe de expressão {if ...} pode ser tanto simples quanto complexa da forma que você queira. Aninhamento ilimitado de sections, ifs, etc. permitidos. - É possível embutir o código PHP diretamente em seus arquivos de template, - apesar de que isto pode não ser necessário (não recomendado) - visto que a ferramenta é tão customizável. + É possível embutir o código PHP diretamente em seus arquivos de template, apesar de que isto pode não ser necessário (não recomendado) visto que a ferramenta é tão customizável. Suporte de caching embutido - Fontes de template arbitrárias + Fontes de template arbitrários Funções de manipulação de cache customizadas Arquitetura de Plugin @@ -74,7 +69,7 @@ Instalação - Requerimentos + Requisitos Smarty requer um servidor web rodando o PHP 4.0.6 superior. @@ -84,7 +79,7 @@ Instalação Básica Instale os arquivos da biblioteca do Smarty que estão no diretório /libs/ da - distribuição. Estes são os arquivos PHP que você NÃO EDITARIA. Eles são comuns + distribuição. Estes são os arquivos PHP que você NÃO PRECISA editar. Eles são comuns a todas as aplicações e eles só são atualizados quando você atualiza para uma nova versão do Smarty. @@ -96,19 +91,19 @@ Smarty_Compiler.class.php Config_File.class.php debug.tpl /core/*.php (todos eles) -/plugins/*.php (todos eles) +/plugins/*.php (todos eles) + O Smarty utiliza uma constante do PHP chamada SMARTY_DIR que é o caminho para diretório da biblioteca do Smarty. Basicamente, se sua aplicação pode encontrar o arquivo - Smarty.class.php, você não precisa definir o - SMARTY_DIR, Smarty encontrará-lo. Então, se Smarty.class.php não está - em seu include_path, ou você não fornece um caminho absoluto para ele em sua aplicação, então - você deve definir o SMARTY_DIR manualmente. - SMARTY_DIR deve incluir uma - barra de seguimento. + Smarty.class.php, você não precisa definir a constante + SMARTY_DIR, o Smarty irá localizá-la sozinho. Sendo assim, se o arquivo Smarty.class.php + não está em seu include_path, ou você não fornece um caminho absoluto para ele em sua aplicação, então + você deve definir a constante SMARTY_DIR manualmente. A constante SMARTY_DIR deve + conter uma barra de seguimento. Aqui está um exemplo de como você cria uma instância do Smarty em seus scripts PHP: @@ -118,12 +113,13 @@ debug.tpl Cria uma instância Smarty do Smarty require('Smarty.class.php'); -$smarty = new Smarty; +$smarty = new Smarty; + Tente rodar o script acima. Se você obtiver um erro dizendo que o arquivo - Smarty.class.php file could not be found, você tem que fazer uma + Smarty.class.php não pôde ser encontrado, você tem que fazer uma das coisas a seguir: @@ -131,7 +127,8 @@ $smarty = new Smarty; Fornecer um caminho absoluto para o arquivo da biblioteca require('/usr/local/lib/php/Smarty/Smarty.class.php'); -$smarty = new Smarty; +$smarty = new Smarty; + @@ -141,7 +138,8 @@ $smarty = new Smarty; // para o include_path e reinicie o servidor web. // Então o código a seguir funcionaria: require('Smarty.class.php'); -$smarty = new Smarty; +$smarty = new Smarty; + @@ -149,7 +147,8 @@ $smarty = new Smarty; define('SMARTY_DIR','/usr/local/lib/php/Smarty/'); require(SMARTY_DIR.'Smarty.class.php'); -$smarty = new Smarty; +$smarty = new Smarty; + @@ -165,11 +164,10 @@ $smarty = new Smarty; para cada aplicação que utilizará o Smarty. - Certifique-se que você sabe a localização do document root do seu servidor web. Em nosso exemplo, - o document root é "/web/www.mydomain.com/docs/". Os diretórios do Smarty + Certifique-se que você sabe a localização do 'document root' do seu servidor web. Em nosso exemplo, + o 'document root' é "/web/www.mydomain.com/docs/". Os diretórios do Smarty só são acessados pela biblioteca do Smarty e nunca acessados diretamente pelo navegador. Então para - evitar qualquer preocupação com segurança, - é recomendado colocar estes diretórios + evitar qualquer preocupação com segurança, é recomendado colocar estes diretórios fora do document root. @@ -181,10 +179,10 @@ $smarty = new Smarty; "/web/www.mydomain.com/smarty/guestbook/". - Você precisará pelo menos de um arquivo dentro de seu document root, e que seja acessado pelo + Você precisará pelo menos de um arquivo dentro de seu 'document root', e que seja acessado pelo navegador. Nós chamamos nosso script de "index.php", e o colocamos em um subdiretório dentro - do document root chamado "/guestbook/". + do 'document root' chamado "/guestbook/". @@ -204,7 +202,7 @@ $smarty = new Smarty; - Exemple de estrutura de arquivo + Exemplo de estrutura de arquivo /usr/local/lib/php/Smarty/Smarty.class.php /usr/local/lib/php/Smarty/Smarty_Compiler.class.php @@ -218,7 +216,8 @@ $smarty = new Smarty; /web/www.mydomain.com/smarty/guestbook/configs/ /web/www.mydomain.com/smarty/guestbook/cache/ -/web/www.mydomain.com/docs/guestbook/index.php +/web/www.mydomain.com/docs/guestbook/index.php + @@ -238,7 +237,8 @@ chown nobody:nobody /web/www.mydomain.com/smarty/guestbook/templates_c/ chmod 770 /web/www.mydomain.com/smarty/guestbook/templates_c/ chown nobody:nobody /web/www.mydomain.com/smarty/guestbook/cache/ -chmod 770 /web/www.mydomain.com/smarty/guestbook/cache/ +chmod 770 /web/www.mydomain.com/smarty/guestbook/cache/ + @@ -252,7 +252,7 @@ chmod 770 /web/www.mydomain.com/smarty/guestbook/cache/ - Nós precisamos criar o arquivoindex.tpl que o Smarty vai ler. Ele estará localizado em seu + Nós precisamos criar o arquivo index.tpl que o Smarty vai ler. Ele estará localizado em seu $template_dir. @@ -262,7 +262,8 @@ chmod 770 /web/www.mydomain.com/smarty/guestbook/cache/ {* Smarty *} -Olá, {$nome}! +Olá, {$nome}! + @@ -272,13 +273,12 @@ Ol {* Smarty *} é um comentário de template. Ele não é exigido, mas é uma prática boa iniciar todos os seus arquivos de template com este com este comentário. Isto faz com que o arquivo seja reconhecido sem levar em consideração a sua extensão. Por exemplo, - editores de texto poderiam reconhecer - o arquivo e habilitar iluminação de sintaxe especial. + editores de texto poderiam reconhecer o arquivo e habilitar coloração de sintaxe especial. - Agora vamos editar index.php. Nós criaremos uma instância do Smarty, daremos valor às variáveis + Agora vamos editar index.php. Nós criaremos uma instância do Smarty, atribuiremos valores às variáveis de template e mostraremos o arquivo index.tpl. Em nosso ambiente de exemplo, "/usr/local/lib/php/Smarty" é o nosso include_path. Certifique-se de ter feito o mesmo, ou use caminhos absolutos. @@ -287,7 +287,7 @@ Ol Editando /web/www.mydomain.com/docs/guestbook/index.php -// ler a biblioteca do Smarty +// carregar a biblioteca do Smarty require('Smarty.class.php'); $smarty = new Smarty; @@ -297,9 +297,10 @@ $smarty->compile_dir = '/web/www.mydomain.com/smarty/guestbook/templates_c/'; $smarty->config_dir = '/web/www.mydomain.com/smarty/guestbook/configs/'; $smarty->cache_dir = '/web/www.mydomain.com/smarty/guestbook/cache/'; -$smarty->assign('nome','Taniel'); +$smarty->assign('nome','Thomas'); -$smarty->display('index.tpl'); +$smarty->display('index.tpl'); + @@ -308,30 +309,29 @@ $smarty->display('index.tpl'); Em nosso exemplo, nós estamos configurando caminhos absolutos para todos os diretórios do Smarty. Se '/web/www.mydomain.com/smarty/guestbook/' está dentro de seu include_path do PHP, então estas configurações não são necessárias. Entretanto, isto é mais eficiente - e (a experiência mostra) tem menos tendência a erros em relação à definição de caminhos - absolutos. Isto garante que o - Smarty está pegando arquivos do diretório que você deseja. + e (a experiência mostra) menos tendência a erros em relação à definição de caminhos + absolutos. Isto garante que o Smarty está obtendo os arquivos dos diretórios que você deseja. - Agora lê o arquivo index.php de seu navegador. - Você veria "Olá, Taniel!" + Agora carregue o arquivo index.php em seu navegador. + Você veria "Olá, Thomas!" Você completou a configuração básica para o Smarty! - Expandindo a configuração + Estendendo a configuração Esta é uma continuação da instalação básica, - por favor leia ela primeiro! + por favor leia a instalação básica primeiro! - Uma forma um pouco mais flexível de configurar o Smarty é expandir a classe e inicializar seu ambiente de + Uma forma um pouco mais flexível de configurar o Smarty é estender a classe e inicializar seu ambiente de Smarty. Então, ao invés de configurar caminhos de diretórios repetidamente, preencher as mesmas variáveis, etc., nós podemos fazer isso para facilitar. Vamos criar um novo diretório "/php/includes/guestbook/" e criar um novo arquivo chamado "setup.php". Em nosso ambiente de exemplo, "/php/includes" está em nosso @@ -343,10 +343,10 @@ $smarty->display('index.tpl'); Editando /php/includes/guestbook/setup.php -// lê a biblioteca do Smarty +// carrega a biblioteca do Smarty require('Smarty.class.php'); -// O arquivo setup.php é uma boa forma para ler +// O arquivo setup.php é uma boa forma para carregar // arquivos de bibliotecas da aplicação exigida, e você pode fazer // isso corretamente aqui. Um exemplo: // require('guestbook/guestbook.lib.php'); @@ -368,7 +368,8 @@ class Smarty_GuestBook extends Smarty { $this->assign('app_name','Guest Book'); } -} +} + @@ -383,13 +384,14 @@ require('guestbook/setup.php'); $smarty = new Smarty_GuestBook; -$smarty->assign('nome','Taniel'); +$smarty->assign('nome','Thomas'); -$smarty->display('index.tpl'); +$smarty->display('index.tpl'); + - Agora você ver que é completamente simples criar uma instância do Smarty, apenas use + Agora você pode ver que é extremamente simples criar uma instância do Smarty, apenas use Smarty_GuestBook que automaticamente inicializa tudo para a nossa aplicação. diff --git a/docs/pt_BR/preface.xml b/docs/pt_BR/preface.xml index ed0c7f4c..6bf98e94 100644 --- a/docs/pt_BR/preface.xml +++ b/docs/pt_BR/preface.xml @@ -2,69 +2,61 @@ Prefácio - Esta é uma das dúvidas mais frenquentes na "mailing list" do PHP: - Como eu posso fazer PHP scripts independentes do layout ? Enquanto - PHP está contado como "HTML linguagem de blocos dinâmicos", após estar - escrevendo alguns projetos que misturavam PHP e HTML livremente alguém veio com a - idéia que a separação do form e conteúdo é uma boa prática [TM]. Além disso, - em muitas empresas os papéis de web designer e programador são separados. - Consequentemente, a procura por - uma solução de template continua. + Esta é sem dúvida uma das perguntas mais freqüentes nas listas de discussões sobre PHP: + como eu faço meus scripts em PHP independentes do layout? O PHP é vendido como sendo uma + "linguagem de script embutida no HTML", após escrever alguns projetos que misturam HTML e + PHP naturalmente vem uma idéia de que a separação da forma e conteúdo é uma boa prática [TM]. + Além disso, em muitas empresas os papéis de designer e programador são separados. + Conseqüentemente, a busca por um sistema de templates continua. - Na minha própria empresa por exemplo, o desenvolvimento de uma aplicação - continua como segue: Após a documentação necessária estar pronta, o web designer - faz a maquete da interface e entrega isso ao programador. O programador implementa - as regras de negócio no PHP e usa a maquete para criar o "esqueleto" do template. - O projeto está então nas mãos da pessoa responsável pelo layout HTML designer/web page - que produz o template para sua glória completa. O projeto deve ir e voltar - entre programação/HTML várias vezes. Desta maneira, é importante para ter - um bom suporte de template porque programadores não querem fazer nada - com HTML e não querem HTML designers fazendo besteiras no código PHP. - Designers precisam de suporte para arquivos de configuração, blocos dinâmicos e - outras interfaces usadas, mas eles não querem ocupar-se com - as complexidades da linguagem - de programação PHP. + Na nossa empresa por exemplo, o desenvolvimento de uma aplicação é feito da seguinte + maneira: Após a documentação necessária estar pronta, o designer faz o esboço da interface + e entrega ao programador. O programador implementa as regras de negócio no PHP e usa o + esboço da interface para criar o esqueleto dos templates. O projeto então está nas mãos + da pessoa responsável pelo layout HTML da página que então transforma o esboço em um layout + realmente funcional. O projeto talvez vá e volte entre programação/designer HTML várias vezes. + Porém, é importante ter um bom suporte à templates porque os programadores não querem ter que + ficar mexendo com HTML e não querem que os designers estraguem seus códigos PHP. Os designers + precisam de ajuda para alterar os arquivos de configuração, blocos dinâmicos e outros + problemas relacionados à interface usada, mas eles não querem ocupar-se com as complexidades + da linguagem de programação PHP. - Olhando para muitas soluções de template para PHP disponíveis atualmente, - a maioria destes disponibiliza uma forma rudimentar de substituição de variáveis - dentro de templates e fazem um form limitado de blocos dinâmicos de funcionalidades. - Mas minhas necessidades próprias requisitam um pouco mais do que isso. - Nós não queremos programadores mexendo com layout HTML em tudo, mas isso foi quase inevitável. - Por exemplo, se um designer quiser cores no background alternando-se em blocos dinâmicos, - isso tem que ser feito pelo programador antecipadamente. Nós também - precisamos que designers estejam habilitados a usar seus próprios arquivos de configuração, - e colocar variáveis deles dentro dos templates. A lista continua. + Analisando muitas das soluções de templates disponíveis para PHP hoje em dia, a + maioria somente disponibilizada uma forma rudimentar de substituição de variáveis + dentro dos templates e trabalham de forma limitada com as funcionalidades dos blocos + dinâmicos. Mas nossas necessidades necessitam de um pouco mais do que isso. Nós não + queríamos que programadores mexendo com layout em HTML, mas isso é praticamente inevitável. + Por exemplo, se um designer quiser que as cores de fundo se alternam em blocos dinâmicos, + isso tem que ser feito pelo programador antecipadamente. Nós também precisamos que os designers + possam usar seus próprios arquivos de configuração, e usar as variáveis definidas nestes arquivos + em seus templates. E a lista de necessidades continua... - Nós iniciamos escrevendo por acaso um template engine por volta de 1999. - Após o término, nós começamos a trabalhar num template engine - escrito em C que esperançosamente foi aceito para ser incluso com PHP. - Nós não somente encontramos algumas complicadas barreiras técnicas, mas - houve também calorosos debates sobre exatamente o que um template engine devia - e não devia fazer. Desta experiência, nós decidimos que o template - engine deveria ser escrito em PHP como uma classe, para qualquer um usar da mesma forma - como eles vêem. Então nós escrevemos um engine que o - SmartTemplate nunca veio a existir (note: essa - classe nunca foi enviada ao público). Ela foi uma classe que - fazia quase tudo que gostaríamos: substituição de variáveis regular, suporte à - inclusão de outros templates, integração com arquivos de configuração, código PHP - embutido, funcionalidade 'if' limitada e muito mais blocos dinâmicos robustos - que poderia ser aninhados muitas vezes. Tudo isso com expressões regulares - e o código produzido será melhor, como nós diremos, - impenetrável. Isso era também notoriamente lento em grandes aplicações para todos - as interpretações e expressões regulares trabalhando em cada requisição. - O maior problema do ponto de vista de um programador foi toda a - necessidade de trabalhar no processamento de scripts PHP e processamento - de blocos dinâmicos de templates. Como nós fazemos isso facilmente? + Nós começamos à escrever as especificações para um sistema de templates por volta de 1999. + Após o término das especificações, nós começamos a escrever um sistema de template em C + que esperávamos ser aceito para rodar com o PHP. Não só esbarramos em muitas barreiras + técnicas, como também houve um enorme debate sobre o que exatamente um sistema de template + deveria ou não fazer. À partir desta experiência, nós decidimos que o sistema de template + fosse escrito para ser uma classe do PHP, para que qualquer um usa-se da forma que lhe fosse + mais conveniente, então nós escrevemos um sistema que fazia exatamente, foi aí que surgiu o + SmartTemplate (obs: esta classe nunca foi enviada ao público). + Foi uma classe que fez quase tudo que nós queríamos: substituição de variáveis, suporte à + inclusão de outros templates, integração com arquivos de configuração, código PHP embutido, + funcionalidades 'if' limitada e blocos dinâmicos muito mais robustos que poderiam ser aninhados + muitas vezes. Foi tudo feito usando expressões reguladores e códigos confusos, como diríamos, + impenetrável. Era um sistema também extremamente lento em grandes aplicativos por causa de todo + o trabalho que era feito pelas expressões regulares e o 'parsing'(interpretação) em cada chamada + ao aplicativo. O maior problema do ponto de vista de um programador foi o espantoso trabalho que + era necessário para configurar e processar os blocos dinâmicos dos templates. Como faríamos + esse sistema ser simples de usar? - Então vem a visão do que ultimamente virou a Smarty. Nós sabemos quão rápido - é um código PHP sem o overhead da interpretação do template. Nós também sabemos - quão meticuloso e autoritária a linguagem PHP deve ser ao olhar de um designer, - e isso poderia ser mascarado com uma simples sintaxe de template. - Então o que acontece se nós combinarmos - estas duas forças? Desta maneira, Smarty nasceu... + Foi então que veio a visão do que hoje é conhecido como Smarty. Nós sabemos o quão + rápido é um código PHP sem o sobrecarregamento de um sistema de templates. Nós também + sabemos quão meticuloso e assustador é a linguagem PHP aos olhos de um designer atual, + e isso tudo poderia ser mascarado usando uma sintaxe simples nos templates. Então o que + acontece se nós combinarmos essas duas forças? Assim, nasceu o Smarty...