Development

Changeset 28321

You must first sign up to be able to contribute.

Changeset 28321

Show
Ignore:
Timestamp:
02/28/10 14:48:30 (4 years ago)
Author:
Andreia.Bellini
Message:

--

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • doc/branches/1.4/more-with-symfony/pt/14-Playing-with-Symfony-Config-Cache.markdown

    r27173 r28321  
    11Brincando com o Cache da Configuração do symfony 
    2 ================================================ 
     2=================================== 
    33 
    44*por Kris Wallsmith* 
     
    2222 
    2323No entanto, da perspectiva do desenvolvedor de *templates*, essa abstração de como um 
    24 um formulário se renderiza pode ser problemática. Dê uma olhada na seguinte formulário: 
     24um formulário se renderiza pode ser problemática. Dê uma olhada no seguinte formulário: 
    2525 
    2626![Formulário em seu estado padrão](http://www.symfony-project.org/images/more-with-symfony/config_cache_form_default.png) 
     
    162162 
    163163>**NOTE** 
    164 >Perceba que este código verifica uma opção `is_enhanced` em cada objeto de formulário antes 
     164>Perceba que este código verifica a opção `is_enhanced` em cada objeto de formulário antes 
    165165>de realçá-lo (método `enhance`). Isto é para prevenir que formulários passados de *templates* para *partials* sejam 
    166166>realçados duas vezes. 
     
    232232realçado. Leitura do sistema de arquivos desta forma deve ser evitada. 
    233233Segundo, existem vários níveis de loops aninhados e uma série de condicionais 
    234 que só vai atrasar a sua aplicação para baixo. A solução para ambos os 
     234que só vai atrasar a sua aplicação. A solução para ambos os 
    235235problemas reside no cache de configuração do symfony. 
    236236 
     
    303303>Este método funciona de forma diferente quando está com o modo debug ligado. Como os arquivos de configuração 
    304304>são editados durante o curso do desenvolvimento, `->checkConfig()` irá comparar 
    305 >quando os arquivos originais e os armazenados em cache foram modificados pela última vez para se certificar de que obtenh
     305>quando os arquivos originais e os armazenados em cache foram modificados pela última vez para se certificar de obter
    306306>versão mais recente. Isso adiciona mais alguns passos ao 
    307307>funcionamento do modo de debug desligado: 
     
    365365por cada classe de formulário configurado em `forms.yml`. Isto realiza o trabalho, 
    366366mas se você passar vários objetos de formulário a um *template*, ou tem uma longa lista de 
    367 formulários configurados no YAML, você poderá começar a ver um impacto na performance. 
     367formulários configurados no YAML, você poderá ver um impacto na performance. 
    368368Esta é uma boa oportunidade para escrever um manipulador de configuração customizado que otimiza 
    369369este processo. 
     
    410410* `::parseYaml($configFile)` 
    411411 
    412 Os dois primeiros métodos de implementam a 
     412Os dois primeiros métodos implementam a 
    413413[configuração em cascata](http://www.symfony-project.org/reference/1_2/en/03-Configuration-Files-Principles#chapter_03_configuration_cascade) do symfony (*configuration cascade*). 
    414414Os outros implementam a 
     
    531531Podemos verificar que a nova mensagem para `required` está sendo aplicada no script 
    532532de teste, e confirma que formulários filhos receberão as melhorias de seus pais, 
    533 mesmo se não houver nenhum configuraçãl para a classe filha. 
     533mesmo se não houver nenhum configuração para a classe filha. 
    534534 
    535535    [php] 
     
    556556![Testes passando](http://www.symfony-project.org/images/more-with-symfony/config_cache_tests_5_ok.png) 
    557557 
    558 Caprichando com Formulários Embarcados (*Embedded Forms*) 
     558Caprichando com Formulários Embutidos (*Embedded Forms*) 
    559559--------------------------------- 
    560560 
    561561Existe uma característica importante do *framework* de formulário do symfony que ainda 
    562 não consideramos: formulários embarcados. Se uma instância de `CommentForm` é embarcado em 
     562não consideramos: formulários embutidos. Se uma instância de `CommentForm` é embutido em 
    563563outro formulário, os realces que fizemos em `forms.yml` não serão aplicados. 
    564564Isso é fácil de demonstrar, em nosso script de teste: 
     
    575575    $t->like($form['comment']['body']->renderLabel(), 
    576576      '/Por favor, escreva seu comentário/', 
    577       '->enhance() realça formulários embarcados'); 
    578  
    579 Esta nova asserção demonstra que formulários embarcados não estão sendo realçados: 
     577      '->enhance() realça formulários embutidos'); 
     578 
     579Esta nova declaração demonstra que formulários embutidos não estão sendo realçados: 
    580580 
    581581![Testes falhando](http://www.symfony-project.org/images/more-with-symfony/config_cache_tests_6_not_ok.png) 
     
    583583Consertar este teste envolverá um manipulador de configuração mais avançado. Temos de ser 
    584584capazes de aplicar os realces configurados em `forms.yml` de uma forma modular para 
    585 contar com os formulários embarcados, assim nós vamos gerar um método realçador 
     585contar com os formulários embutidos, assim nós vamos gerar um método realçador 
    586586especialmente feito para cada classe de formulário configurada. Estes métodos serão gerados pelo nosso 
    587587manipulador personalizado de configuração em uma nova classe "trabalhadora". 
     
    679679A classe `sfFormYamlEnhancer` vai agora submeter-se a classe trabalhadora gerada para 
    680680lidar com a manipulação de objetos de formulários, mas agora deve levar em conta para a recursividade 
    681 através de formulários embarcados. Para fazer isso devemos processar o esquema de campo do formulário 
     681através de formulários embutidos. Para fazer isso devemos processar o esquema de campo do formulário 
    682682(que pode ser iterado recursivamente) e o objeto do formulário (que 
    683 inclui os formulários embarcados) em paralelo. 
     683inclui os formulários embutidos) em paralelo. 
    684684 
    685685    [php] 
     
    725725 
    726726>**NOTE** 
    727 >Os campos em objetos de formulários embarcados não devem ser modificados depois de terem sido 
    728 >embarcados. Formulários embarcados são armazenados no formulário pai para efeitos de  
     727>Os campos nos objetos de formulários embutidos não devem ser modificados depois de terem sido 
     728>embutidos. Formulários embutidos são armazenados no formulário pai para efeitos de  
    729729>processamento, mas não têm nenhum efeito sobre a forma como o formulário pai é renderizado. 
    730730 
    731 Com suporte para formulários embarcados pronto, nossos testes agora devem passar. Execute 
     731Com suporte para formulários embutidos pronto, nossos testes agora devem passar. Execute 
    732732o script para descobrir: 
    733733 
     
    743743    [yml] 
    744744    # <?php for ($i = 0; $i < 100; $i++): ?> # 
    745     Forma <?php echo $i ?>: ~ 
     745    Form<?php echo $i ?>: ~ 
    746746    # <?php endfor; ?> # 
    747747 
     
    883883Para corrigir isso, vamos precisar isolar o código na classe realçadora que chama 
    884884o cache de configuração, de modo que podemos sobrecarregá-lo em nosso script de teste e usar uma *fixture* para o 
    885 `forms,yml` no lugar. 
     885`forms.yml` no lugar. 
    886886 
    887887    [php] 
     
    966966-------------- 
    967967 
    968 Como você pode ver pelos *benchmarks* feitos aqui, o cache de configuração do symfony torna 
     968Como você pode ver pelos *benchmarks* realizados aqui, o cache de configuração do symfony torna 
    969969possível utilizar a simplicidade dos arquivos de configuração YAML com praticamente 
    970970nenhum impacto no desempenho.