Dicas e truques do PHP

Mago Minimalista
Studio Oceano
Published in
3 min readOct 5, 2019

Reaproveite ainda mais seu código, crie senhas seguras e reduza drasticamente o processamento de aplicações.

Traits (PHP 5.4.0)

Uma Trait é um trecho de código que resolve um problema e pode ser alocado dentro de uma classe. Sim, elas podem ser reescritas. As Traits foram criadas com a intenção de reuso do código.

Usamos use Trait (nome da trait) dentro da classe para usá-la. Uma trait pode ser uma funcionalidade inteira que realiza uma operação em expecífico que criamos para reutilizar quantas vezes forem precisas.

Generators (PHP 5.5.0)

Em resumos os generators são interadores que calculam e geram valores de interação por demanda. Em outras palavras, usamos generators para calcular e gerar valores subsequentes sem uso de memória valiosa. Para criar generetors usamos a palavra-chave yield uma ou mais vezes.

Sabe quando você cria um laço de repetição para criar um array, seja para ler um documento, escrever, ou mesmo criar um range de números, usamos yield ao invés de um array vazio para poupar memória.

Exemplo básico

Exemplo para entender

Exemplo prático

Uma economia superior a 90% no consumo de memória ram no servidor

Qual a real utilidade disso? Fazer a leitura de arquivos por exemplo. Se eu tenho um CSV de 4GB para ser lido ele faz a leitura linha a linha e não de todo o arquivo economizando e muito memória do sistema.

Closures (PHP 5.3.0)

Lambda são funções anônimas simples:

$var = function ($num1, $num2) { return $num1 + $num2 };

E Closures são funções anônimas que permitem interações com variáveis externas que foram definidas no mesmo escopo em que o closure foi criada, para isso utilizamos a palavra-chave use, informando as variáveis externas que iremos interagir entre parênteses.

Você pode criar closures para realizar cálculos e conversões durante uma operação maior. Temos também a closure __invoke(); trata-se de uma função anônima chamado sempre que uma classe é instanciada.

Também usamos closures em funções do PHP que exigem Callback como array_map() e pre_replace_callback().

Vamos a esse exemplo completo:

Tá confuso? Dá uma olhadinha nesses exemplos práticos:

Zend OPache (PHP 5.5.0)

Em resumo ao habilitar o ZendOPache irá reduzir o tempo de resposta de suas requisições HTTP pois armazena bytecodes pre-compilados na memória do que já foi solicitado e permite sua execução imediata da aplicação para o compilador do PHP.

Por padrão esse recurso não vem habilitado em hospedagens compatilhadas. Crie um arquivo com <?php phpinfo(); e verifique se está habilitado.

Caso contrário siga esse tutorial ilustrado para habilitar via CPainel:

Não esqueça de configurar depois:

Saiba mais sobre Zend OPache em bit.ly/php-config

API bcrypt para hash de senhas (PHP 5.5.0)

Crie suas senhas:

Verifique:

Recrie com uma opção diferente:

Outras configurações no PHP.ini

Procure no php.ini por upload_max_filesize, max_file_upload e configure de acordo com as suas necessidades.

max_execution_time determina o período máximo de tempo que um único processo PHP poderá executar antes de ser finalizado. É recomendado alterar esse valor para 5; correspondente ao tempo em segundos. Essa configuração pode ser alterada para um determinado script por meio de set_time_limit(); Para renderizar um script em background: <?php exec (‘echo “meu-report.php” | atnow’); echo ‘Carregando…’; Precisa de uma fila de tarefas dedicadas? Vai de php-resque:

Buferização de saída: output_buffering = 4096 e implícita_flush = false

Altere o tamanho do seu realpath_cache_size. Defina um valor alto 256k, depois em um arquivo php use print_r(realpath_cache_size()); Altere o valor novamente para esse exibido no print_r.

Os ajustes acima irão fazer como que o desempenho da sua aplicação melhore drasticamente.

Obrigado por chegar até aqui, compartilhe, comente. Eu tentei ser o mais sucinto possível para não me estender muito com este post.

Att,

Philipe Cairon M. de Siqueira

--

--

Mago Minimalista
Studio Oceano

Designer e Desenvolvedor Web. Sou aspirante por novas tecnologias, sempre em busca de ferramentas para incrementar o trabalho ou maximizar a produtividade.