Entries Tagged 'programação' ↓

symfony forms - tradução do livro sfForms Book

Caros,

Após algum tempo parado nas traduções, arrumei um tempinho e fiz a tradução do primeiro capítulo do livro do subframework de forms do symfony.

Dêem uma olhada:

http://www.symfony-project.org/book/forms/1_1/pt_BR/

Até o fim da semana pretendo traduzir os restantes, se alguém ajudar, sera bem vindo ou mesmo sugerir correções na tradução.

Novidades do PHP 5.3

 

Ontem ( dia 24 de Julho de 2008) é feature freeze para o PHP 5.3,  o numero de commits foi alto devido a esse freeze.

Essa versão, mais até mesmo que a 5.2, vai incluir diversas funcionalidades interessantes e a muito
solicitadas, como namespaces e funções lambda.  Confira:

  •  Clousures e lambda functions
    Agora podemos fazer algo assim:
    <?php
    $lambdaFunc = function($name){ echo "Hello " . $name;  }
    $lambdaFunc(’Lucas’)
  • Suporte a Namespaces
  • Late Static Binding
  • Adicionado suporte ao Error Mode Deprecated para Usuarios.
  • Possibilidade para tratar Exceçoes em métodos destrutores
  • Adicionada constante __DIR__ (diretorio do arquivo)
  • Spl agora é extensão oficial e não pode ser desabilitada
  • Inumeras novas interfaces e Iteradores de Array na Spl
  • E um sem numero de bugs corrigidos

 Esta é sem duvida uma das maiores mudanças no ramo 5.3, somente a adiçao do suporte a namespaces, que estava agendado para o PHP 6, demonstra o impacto que esta versão ira trazer aos desenvolvedores.

Dia 31 de Julho esta planejado lançamento do primeiro alpha, e então lançamento em Setembro/Outubro

Antes de PHP 6, planejado para o primeiro trimestre de 2009, podemos ter uma versão intermediaria, o PHP 5.4, mas isso dependera muito se funcionalidades ou parte delas da 5.3 não forem concluidas em tempo.

symfony 1.1 cookbook em português

 

A comunidade symfony brasil esta fazendo um grande esforço de tradução do cookbook da versão 1.1  do symfony.

Os recipes ( receitas ) do cookbook ( livro de receitas) do symfony mostram como fazer tarefas específicas com o framework em tutoriais rápidos.

Você pode olhar os artigos traduzidos aqui

symfony 1.1 - saindo do forno

O desenvolvimento do framework php symfony esta chegando perto do release final.

Atualmente o segundo release candidate esta bastante estável e deve ser também o ultimo antes do release final.

Algumas novidades:

  1. Independência de Camada de Mapeamento O/.
  2. Um novo e completo framework de Forms.
  3. Novas classes de configuração POR projeto que permitem inumeras personalizações.
  4. Suporte a diferentes formatos de saída ( Json, Html, Iphone, e qualquer outro que você desejar)
  5. Sistemas de Task totalmente refeito ( retirado pake)
  6. Subframeworks desacoplados:
    Agora todas as classes refereciam a EventDispatcher, removendo depêndencias e flexibilizando o uso.

Nas próximas semanas vou tentar abordar alguns desses itens em artigos completos, se alguém tiver sugestões de qual parte iniciar, deixe nos comentarios.

[TRADUÇÃO] - 39 dicas de performance PHP

Meu primeiro artigo no blog, uma tradução do otimo post de Reinhold, depois desse espero ter sempre artigos e traduções de qualidade sobre PHP. ( fiz algumas alterações e coloquei links para alguns artigos relacionados)

[UPDATE]
Algumas correções de português, adicionados exemplos.
Obrigado Pablo.
[/UPDATE]

Ai esta: (Thank you Reinhold)

  1. Se um método pode ser estatico, declare ele estatico. O fator de otimização é 4x+
  2. echo é mais rapido que print. Veja
  3. Prefira usar echo com multiplo parametros ao invés de concatenar string
    1. echo "parametro um", $var , "outro parametro"
  4. Set o valor maximo  do seus loops FOR antes e não no for
    #onde:
    1. for($i=0;$i&lt;count($array);$i++)
    2. #use:
    3. $max_for = count($array);
    4. for($i=0;$i&lt;$max_for;$i++)
  5. Sempre de unset em variaveis que nao serão mais usadas, principalemente grandes arrays.
  6. Tente não usar métodos magicos, como:  __get, __set, __autoload
  7. require_once() tem custo elevado, prefira include[_once], como alertado pelo Pablo, o include_once é mais custoso que o include.
  8. Use caminhos completos em includes e requires, o PHP gastara menos tempo resolvendo os caminhos.
  9. Se você deseja descobrir quando o script começou a ser executado, $_SERVER[’REQUEST_TIME’]  é melhor que time()
  10. Se você puder, use strncasecmp, strpbrk e stripos no lugar de funcões regex
  11. str_replace é mais rápida que preg_replace, mas strtr é ainda 4x mais rapida que str_replace.
  12. Se uma função, como troca de string , aceitar tanto arrays quanto caracteres unicos e a sua lista de argumentos não for muito longa, considere escrever algumas vezes o mesmo codigo passando um caracter por vez ao invés de uma linha passando arrays nos argumentos de pesquisa e troca.
  13. É melhor usar switch/case do que multiplos if’s e else.
  14. Usar supressão de erros com @ na frente da função é muito lento.
  15. Ative o mod_deflate do apache( modulo de compressão de resposta).
  16. Feche as conexões ao banco de dados quando você não for mais usa-lo.
  17. $row[’id’] é 7x mais rapido que  $row[id]
  18. Mensagens de erros tem custo elevado, desligue-as em produção.
  19. Não use funcões dentro de loops, como:
    1. for ($x=0; $x &lt; count($array); $x)

    A função count() é chamada em cada iteração.

  20. Incrementando uma variavel local é mais rapido.
  21. Incrementando uma variavel global é 2x mais lento que em uma variavel local.
  22. Incrementando uma propriedade ( $this->prop++) é 3x mais lento que em uma variavel local.
  23. Incrementando uma variavel local não definida é de 9x a 10x mais lento do que uma variavel local pré-inicializada.
  24. Declarando uma variável global sem usá-lo em uma função também atrasa as coisas (com aproximadamente a mesma quantidade incrementando como uma variavel local).O PHP provavelmente faz um checagem para ver se existe a nível global
  25. A invocação de métodos parece ser independente do número de métodos definidos em uma classe, em uma classe de teste onde se adicionou 10 metódos não teve mudança de performance.
  26. Métodos em classes derivadas rodam mais rápido do que aqueles definidos na classe base.
  27. Use ‘ ao invés de ” em strings quando não for preciso usar variaveis ou escapes, assim o PHP não necessita procurar e interpretar esses caracteres especiais.
  28. Prefira usar HTML puro se for possivel, scripts PHP são servidos de 2x a 10x mais lentos que equivalentes.
  29. Em cada requisição seus scripts PHP são recompilados, use uma solução de cache, isso pode te dar um ganho de 25 a 100% . Veja
  30. Quando lidando com string e você precisar verificar se a string possui certo tamanho, você entendidamente desejara usar a função strlen().
    Essa função é bastante rapida, já que ela não faz nenhum calculo, apenas retorna o tamanho ja conhecido da string disponivel na estrutura zval(estrutura interna do C usada para guardar variaveis PHP). No entanto como strlen() é uma função ela ainda assim é lenta, porque o PHP precisa fazer varias operações  como lowercase e buscas na hashtable, e em seguida executar a dita função.
    Algumas vezes você podera aumentar a velocidade do seu código usando um truque com isset().
    Exemplo: Digamos que voce tem :

    if (strlen($foo) < 5) { echo “Foo is too short”; }
    1. # versus
    2. if (!isset($foo{5})) { echo "Foo is too short"; }

    Usando isset() sera mais rapido que strlen(), porque diferente de strlen(), isset() é um construtor de linguagem e não uma função, isso quer dizer que a sua execução não necessita busca na hashtable nem uso de lowercase. Virtualmente você não sobrecarga no código atual para determinar o tamanho da string.

  31. Quando incrementando ou decrementando o valor de uma variavel, $i++ normalmente é mais lenta que  ++$i. Isso é especifico para PHP, ou seja, não se aplica a outras linguagens, não sai por ai modificando seu código java ou C. Isso se da porque $i++ usa 4 opcodes enquanto ++$i precisa de somente 3.
  32. Nem tudo precisa ser OOP, gera muita sobrecarga, cada chamada de método e objeto consome um monte de memória.
  33. Não implemente cada estrutura de dados como uma classe, arrays são utéis também.
  34. Não divida muito os métodos, pense bem cada código que sera reusado.
  35. Você sempre podera dividir o código no futuro, caso necessario.
  36. Faça uso das incontaveis funções pré-definidas.
  37. Se você tem muito tempo consumido por funções em seu código, considere escreva-las como extensões C.
  38. Faça Profile do seu código. Um profiler mostra quanto tempo cada parte do seu código consome. A extensão  Xdebug ja contém um profiler.
  39. Excelente artigo sobre otimização PHP de John Lim (inglês)