PHP TDD: Como fazer desenvolvimento focado em testes

Se você está procurando um conteúdo sobre testes automatizados com PHP, com PHPunit e TDD, vai encontrar aqui um pouco sobre o assunto. Espero que ajude você.

O que são testes

Todo projeto com expectativa de “ser grande”, precisa começar com a criação dos testes automatizados no desenvolvimento.

Executar testes manualmente são uma das tarefas mais repetitivas na vida do desenvolvedor. Todo mundo passa por isso de escrever o código e atualizar o navegador, para ver o código está correto.

O que poucos acabam se aprofundando no assunto, é que você não precisa Xampp, Wamp, Apache e etc para executar um código em PHP e validar se o mesmo está funcionando.

Para pequenos projetos, esse processo até pode ser tranquilo, digamos que fácil de ser executado. São casos de blogs em WordPress ou pequenos sites institucionais.

Para grandes projetos, chegará o momento de ser impossível testar todas as funcionalidades do sistema a cada nova atualização.

Um exemplo básico de testes de uma funcionalidade de login
Um exemplo básico de testes de uma funcionalidade de login.

O que é TDD

Um dos padrões mais adotados é o TDD. Esse padrão que é uma sigla de test-driven development, que ajuda muito na vida de grandes projetos, pois antes de começar qualquer desenvolvimento, você irá pensar no que é necessário testar.

Pois, isso sempre é o pensamento, talvez até já seja o processo ao criar “checklists” para depois de cada alteração, lembrar o que é necessário testar.

Executar o desenvolvimento, com o padrão TDD, facilita muito a vida pois você irá mapear todos os processos e já criar os testes, antes de começar o desenvolvimento.

Quando usar TDD

É possível criar os testes automatizados, já com o trablho pronto.

Este não é um processo muito amigável no longo prazo. O ideal é que antes de começar o desenvolvimento você já pare e pense no que será necessário.

Como falar anteriormente pequenos projetos podem não ter tanta necessidade de testes automatizados, pois são poucas coisas para se testar.

Agora, grandes projetos você não terá como controlar quais dependências tiveram alterações, se outra equipe de desenvolvimento fez modificações que impactam no seu feature, e não será possível testar todo o código em pouco tempo.

Os benefícios do TDD

O benefício de se usar testes automatizados, é que a partir de um momento que o projeto tem uma grande escala, você poderá executar um comando no terminal e esperar para ver qual foi o impacto da alteração.

Você terá um ganho em produtividade, pois ao invés de ter que ficar trocando de janelas, executando diversas atualizações de navegador e confiando que passou por todo o processo, um só comando é necessário para tudo isso ser executado e o resultado aparecer na tela.

O processo de deploy também é muito mais fácil, podendo ligar ferramentas de controle de qualidade que irão fazer todos os testes quando qualquer membro da equipe executar um push para o versionamento.

Como usar

O principal framework para fazer testes no PHP, é o PHPUnit.

Praticamente todas as distribuições de frameworks usadas hoje no PHP já vem com esse package pré-instalado.

 

Substr PHP: 3 dicas de como utilizar essa função

Está procurando sobre substr php? Então, você está no lugar certo. Neste artigo vou falar um pouco sobre o que como utilizar substr no PHP.

A função substr é responsável por retornar um pedaço de uma string, conforme parâmetros desejados.

string substr ( $string , $inicio, $tamanho )

Para começar, precisamos entender o funcionamento da função, que é presente em diversas linguagens de programação, como javascript, C, java e outras.

O primeiro parâmetro é a string que desejamos cortar e pegar somente um trecho. O segundo parâmetro é a partir de qual caracter dessa string, vamos retornar. E o terceiro, é o tamanho máximo a retornar a partir da definição de inicio.

Assim, vamos aos exemplos de uso abaixo.

Retornar os 5 últimos caracteres com substr php

Para retornar os últimos 5 caracteres de uma palavra, vamos definir conforme o exemplo abaixo:

$string = 'Paralelepípedo';

echo substr($string, -5)

// retorno será "ípedo";

Lembre-se, é possível usar o número negativo no parâmetro que irá contar o inicio do corte da string, assim irá contar do final para o inicio da string.

Retornar os 3 primeiros caracteres

Digamos que queremos retornar apenas os 3 primeiros caracteres, por exemplo, dos meses do ano. Veja o exemplo abaixo:

$mes = 'Janeiro';

echo substr($mes, 3);

// retorno será 'Jan';

Retornando a partir do 3 caracter, limitado a 5

Agora vamos utilizar a função substr do php para retornar a partir de um determinado caracter, mas com limitador de tamanho da string.

$exemplo = 'Descrição de um evento';

echo substr($exemplo, 3, 5);

// retorno será 'criçã';

Combinando o uso de substr com strpos

A função strpos, que é responsavél por trazer posição que uma setença acontece dentro de um texto, pode ser combinada com a substr para retornar somente determinado conteúdo.

No exemplo abaixo, queremos retornar apenas o dominio do e-mail, removendo o identificado do usuário.

$email = '[email protected]';

echo substr($email, strpos($email, "@")); 

// irá retornar @dicasdephp.com.br
1 Star2 Stars3 Stars4 Stars5 Stars (34 votos, média: 4,50 de 5)
Loading...

Método static no PHP

Está procurando para que serve o método static na programação orientada a objetos no PHP? Então, você está no lugar certo. Neste artigo vou falar um pouco sobre o que método static.

Quando você define que um método é static, está definindo que ele não precisa de uma instância daquela classe para chamá-lo. Isso pode ser muito útil no caso de classes com muitos métodos para utilidades, como mascara, conversões de datas e tratamento de campos!

Exemplo de static na prática

Construimos uma classe simples chamada “Utils”, com um método static “hello_world”. Esse método é muito simples e apenas irá retornar a string de entrada.

<?php

class Utils 
{
 static function hello_world($string)
 {
 return $string;
 }
}

echo Utils::hello_word('Olá Mundo!');

No exemplo acima, o valor será retornado sem nenhum tipo de aviso. Caso a função hello_world() não seja static, o warning abaixo será dados junto com a formatação do número:

Strict Standards: Non-static method Utils::hello_world() should not be called statically in /Users/.../sample.php on line 4

Qualquer dúvida, deixe um comentário!

PHP Cache: Os tipos de cache com PHP

Está procurando sobre como trabalhar com PHP Cache? Então, você está no lugar certo. Neste artigo vou falar um pouco sobre o que os tipos de cache em PHP. Se ao concluir a leitura você ficar com qualquer dúvida, deixe um comentário no final do artigo para ajudarmos você sobre PHP Caching.

PHP Cache

Existem várias maneiras de trabalhar com cache e PHP. O cache é de extrema importância para projetos onde haverá muita concorrência de acessos.

A cada acesso, realizar todas as consultas a arquivos PHP e banco de dados, torna o processo lento, sobrecarrega servidor e deixa o usuário irritado com o serviço do site ou sistema.

Por isso, é importante você aprender a trabalhar com cache em PHP, e assim diminuir custos de servidores. Um dos principais fatores de lojas virtuais perderem vendas hoje, é pela falta de configuração um cache para melhorar o tempo de carregamento das páginas.

O tempo de 1 a 3 segundos a mais no carregamento de uma página de checkout pode fazer com o usuário desista da compra.

Abaixo, listo os principais módulos para cache com PHP e como eles podem ajudar na melhoria de desempenho dos sistemas/sites.

Memcached

Um dos sistemas de cache mais usados com PHP é o Memcached. A sua principal função é diminuir as conexões com banco de dados, evitando que você realize milhares de consultas repetidas ao banco de dados.

Imagine um site de notícias, ou até mesmo um sistema de cadastros de usuários, onde por minutos o conteúdo não sofre alterações. É desnecessário você consultar milhares de vezes o banco de dados para exibir o mesmo conteúdo.

Para isso, o Memcached irá criar um array associativo gigante, com o resultado da sua primeira requisição. Logo, esses valores ficaram salvos em RAM, e tornaram o acesso aos dados mais rápidos.

Você configura o tempo que os dados ficam salvos na RAM, e quando ela estiver sobrecarregada, os dados mais antigos e não utilizados serão dispensados para o armazenamento de novos.

Pode ter certeza, se você tem um blog WordPress, ou algum sistema que sobrecarrega de conexões o banco de dado MySQL, configurar a aplicação para utilizar o Memcached irá salvar o sistema de quedas constantes do banco de dados.

Flow do Memcached para realizar php cache
Neste Flow, está explicado de forma bem simples, como é o funcionamento do Memcached. Ao receber o “Request”, se não houver nada em “cached”, uma nova consulta ao DB será feita antes de enviar o response.

APC

Outra opção para cache com PHP é o APC, sigla que significa “Alternative PHP Cache“. Assim como o Memcached, o APC tem como sua principal funcionalidade salvar informações em RAM para evitar pesquisas repetidas no Banco de Dados.

A grande diferença do APC, é que ele tem uma funcionalidade a mais, que é compilar o script PHP, assim não é preciso executar o script em todas as requisições. Para entender melhor, é preciso lembrar que o PHP é uma linguagem interpretada e não compilada.

Nesse sentido, a cada requisição que sua aplicação recebe, todo o código é interpretado novamente, do primeiro ao último arquivo necessário para enviar o output para o navegador do usuários.

Com o APC ativo, esses arquivos serão compilados na primeira requisição, e nas sequentes não será necessário interpretar todos os arquivos. Com isso, o response para o navegador do usuários será com uma velocidade muito maior.

PHP Cache com APC e sua dashboard
Com o APC, é possível baixar um script e rodar ele no servidor. Na dashboard poderá controlar o desempenho do cache.

OPCache

O sistema de cache OPcache faz a parte de salvar o script do PHP, compilando as informações e evitando que o código seja interpretado a cada requisição. Ele vem nativo no PHP a partir da versão 5.5, mas é necessário ativar nas configurações.

Para ativar o OPcache, é necessário habilitar o módulo no php.ini.

zend_extension=/full/path/to/opcache.so

Assim como o APC e o Memcache, é possível através de uma dashboard, controlar o funcionamento do OPcache.

Instalação e Configuração

Em breve faço um novo post explicando como instalar e configurar cada um desses caches, além de um benchmark para comparação do resultado.

4 coisas que todos os programadores de PHP devem saber

Se você é programador PHP e não conhece qualquer um dos itens listados abaixo, está na hora de iniciar um bom curso de PHP e ler o que mostramos abaixo.

4. Debugar (encontrar erros)

Bem, nem sempre o código vai funcionar de primeira. E muitas vezes será necessário lidar com códigos antigos e mal escritos! Por isso, saber lidar com debug é uma carta na manga de qualquer programador.

Existem várias ferramentas que auxiliam nesse árduo trabalho. As vezes, um print_r() poderá salvar a sua vida. O importante é sempre reconhecer o caminho que o código fazer, do inicio de execução até o output no navegador.

Procure entender e aprender ferramentas como xDebug, dgb, Zend_Debug e a principal de todas, Stack Overflow!

3. Modelagem de Sistemas (ER)

Antes de programar uma linha sequer do código, tente planejar qual será a estrutura dele. Criar uma modelagem ER poderá prever problemas, e fazer com que você economize muito tempo no meio das gambiarras para fazer toda estrutura conversar.

2. Controlar versões do código

O que você acha de escrever muito código e ver que nada funcionou, e que a primeira versão era melhor. Melhor que isso é só estar com o versioamento em dia para salvar dias de trabalho! Sem contar em funções de deploy automático no servidor de teste e produção. Pense e ESTUDE versionamento, de preferência git.

1. Aprenda um bom framework!

OK, já aprender como o PHP funciona? Que ótimo! Agora esqueça o trabalhão de criar um MVC do zero e escolha uma solução mundialmente usada. Melhor do que criar um problema e ter que encontrar a solução sozinho, é poder jgoar um erro no Stack Overflow e ter milhares de programadores debatendo o mesmo problema.

Por isso, tente usar um dos principais framework do mundo! Abaixo tem uma listinha com os 5 mais usados:

  • CakePHP
  • CodeIgniter
  • Symfony
  • Zend Framework

DICA BÔNUS! Use POO (Programação Orientada a Objetos)

A programação orientada a objetos irá trazer um grande ganho em construção para qualquer sistema ou necessidade. A partir da versão PHP 5, o modelo de objetos foi rescrito para permitir melhor performance e mais funcionalidades.

Entre outras novidades do PHP 5 estão a inclusão de visibility, classes e metodos abstract e final, additional metodos mágicos, interfaces, clonagem e dica de tipo.

Na Orientação ao Objeto, cada elemento é representado por um objeto ou classe. Esse tipo de representação procura aproximar o sistema que está sendo criado ao que é observado no mundo real, e um objeto contém características e ações, assim como vemos na realidade.

Uma boa dica pra quem está iniciando no PHP e na programação, é um bom curso que mostrará a programação do inicio até o avançado, além de mostrar como se posicionar no mercado de trabalho.