Changeset 28321
- Timestamp:
- 02/28/10 14:48:30 (3 years ago)
- 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 1 1 Brincando com o Cache da Configuração do symfony 2 =================================== =============2 =================================== 3 3 4 4 *por Kris Wallsmith* … … 22 22 23 23 No 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 n aseguinte formulário:24 um formulário se renderiza pode ser problemática. Dê uma olhada no seguinte formulário: 25 25 26 26  … … 162 162 163 163 >**NOTE** 164 >Perceba que este código verifica uma opção `is_enhanced` em cada objeto de formulário antes164 >Perceba que este código verifica a opção `is_enhanced` em cada objeto de formulário antes 165 165 >de realçá-lo (método `enhance`). Isto é para prevenir que formulários passados de *templates* para *partials* sejam 166 166 >realçados duas vezes. … … 232 232 realçado. Leitura do sistema de arquivos desta forma deve ser evitada. 233 233 Segundo, 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 os234 que só vai atrasar a sua aplicação. A solução para ambos os 235 235 problemas reside no cache de configuração do symfony. 236 236 … … 303 303 >Este método funciona de forma diferente quando está com o modo debug ligado. Como os arquivos de configuração 304 304 >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 obtenha305 >quando os arquivos originais e os armazenados em cache foram modificados pela última vez para se certificar de obter a 306 306 >versão mais recente. Isso adiciona mais alguns passos ao 307 307 >funcionamento do modo de debug desligado: … … 365 365 por cada classe de formulário configurado em `forms.yml`. Isto realiza o trabalho, 366 366 mas 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 aver um impacto na performance.367 formulários configurados no YAML, você poderá ver um impacto na performance. 368 368 Esta é uma boa oportunidade para escrever um manipulador de configuração customizado que otimiza 369 369 este processo. … … 410 410 * `::parseYaml($configFile)` 411 411 412 Os dois primeiros métodos deimplementam a412 Os dois primeiros métodos implementam a 413 413 [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*). 414 414 Os outros implementam a … … 531 531 Podemos verificar que a nova mensagem para `required` está sendo aplicada no script 532 532 de teste, e confirma que formulários filhos receberão as melhorias de seus pais, 533 mesmo se não houver nenhum configuraçã lpara a classe filha.533 mesmo se não houver nenhum configuração para a classe filha. 534 534 535 535 [php] … … 556 556  557 557 558 Caprichando com Formulários Emb arcados (*Embedded Forms*)558 Caprichando com Formulários Embutidos (*Embedded Forms*) 559 559 --------------------------------- 560 560 561 561 Existe uma característica importante do *framework* de formulário do symfony que ainda 562 não consideramos: formulários emb arcados. Se uma instância de `CommentForm` é embarcado em562 não consideramos: formulários embutidos. Se uma instância de `CommentForm` é embutido em 563 563 outro formulário, os realces que fizemos em `forms.yml` não serão aplicados. 564 564 Isso é fácil de demonstrar, em nosso script de teste: … … 575 575 $t->like($form['comment']['body']->renderLabel(), 576 576 '/Por favor, escreva seu comentário/', 577 '->enhance() realça formulários emb arcados');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 579 Esta nova declaração demonstra que formulários embutidos não estão sendo realçados: 580 580 581 581  … … 583 583 Consertar este teste envolverá um manipulador de configuração mais avançado. Temos de ser 584 584 capazes de aplicar os realces configurados em `forms.yml` de uma forma modular para 585 contar com os formulários emb arcados, assim nós vamos gerar um método realçador585 contar com os formulários embutidos, assim nós vamos gerar um método realçador 586 586 especialmente feito para cada classe de formulário configurada. Estes métodos serão gerados pelo nosso 587 587 manipulador personalizado de configuração em uma nova classe "trabalhadora". … … 679 679 A classe `sfFormYamlEnhancer` vai agora submeter-se a classe trabalhadora gerada para 680 680 lidar com a manipulação de objetos de formulários, mas agora deve levar em conta para a recursividade 681 através de formulários emb arcados. Para fazer isso devemos processar o esquema de campo do formulário681 através de formulários embutidos. Para fazer isso devemos processar o esquema de campo do formulário 682 682 (que pode ser iterado recursivamente) e o objeto do formulário (que 683 inclui os formulários emb arcados) em paralelo.683 inclui os formulários embutidos) em paralelo. 684 684 685 685 [php] … … 725 725 726 726 >**NOTE** 727 >Os campos em objetos de formulários embarcados não devem ser modificados depois de terem sido728 >emb arcados. Formulários embarcados são armazenados no formulário pai para efeitos de727 >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 729 729 >processamento, mas não têm nenhum efeito sobre a forma como o formulário pai é renderizado. 730 730 731 Com suporte para formulários emb arcados pronto, nossos testes agora devem passar. Execute731 Com suporte para formulários embutidos pronto, nossos testes agora devem passar. Execute 732 732 o script para descobrir: 733 733 … … 743 743 [yml] 744 744 # <?php for ($i = 0; $i < 100; $i++): ?> # 745 Form a<?php echo $i ?>: ~745 Form<?php echo $i ?>: ~ 746 746 # <?php endfor; ?> # 747 747 … … 883 883 Para corrigir isso, vamos precisar isolar o código na classe realçadora que chama 884 884 o 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. 886 886 887 887 [php] … … 966 966 -------------- 967 967 968 Como você pode ver pelos *benchmarks* feitos aqui, o cache de configuração do symfony torna968 Como você pode ver pelos *benchmarks* realizados aqui, o cache de configuração do symfony torna 969 969 possível utilizar a simplicidade dos arquivos de configuração YAML com praticamente 970 970 nenhum impacto no desempenho.