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.

 

Redirecionando HTTP para HTTPS

Se você deseja forçar os acessos de um ambiente para https, pode utilizar o script abaixo.

Ele é de fácil adaptação para qualquer aplicação. Lembre-se, como trabalhamos com a função, ele deverá ser uma das chamadas da requisição.

Caso o browser tenha algum output antes de usar essa função, irá imprimir o erro “Erro: “Cannot modify header information – headers already sent” no PHP“.

<?php

if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off'
    || $_SERVER['SERVER_PORT'] == 443) {
    $params = (!empty($_SERVER['REQUEST_URI'])) ? '?' . $_SERVER['REQUEST_URI'] : '';
    header( 'Location: https://' . $_SERVER['HTTP_HOST'] . $params );
}

Erro: “Cannot modify header information – headers already sent” no PHP

Um dos erros mais comuns, que os programadores iniciantes sofrem é o “Warning: Cannot modify header information – headers already sent by…”. Não se preocupe, todo mundo passa por esse erro ao programar com PHP. Descubra abaixo como é fácil de resolver esse erro.

O motivo do erro “Cannot modify header information”

Antes, vamos a explicação do motivo desse erro acontecer na execução de algum script PHP. É bem provável ele deva ser o erro mais procurado no stack overflow.

O motivo desse warning no PHP é simples, pois funções que enviam ou modificam o cabeçalho da requisição, devem ser chamados antes de o php emitir qualquer output.

As funções que devem ser chamadas antes de qualquer output são:

  • header() / header_remove()
  • session_start / session_regenerate_id()
  • setcookie() / setrawcookie()

Exemplos que irão exibir o erro

Caso você precisa fazer algum redirect, utilizando o header() e logo após tentar escrever algo na página, irá fazer o erro aparecer.

<?php

header("Location: http://www.dicasdephp.com.br/");

echo "Executando o redirect...";

Se você executar o exemplo acima, terá o erro “Cannot modify header information” exibindo na tela.

Como evitar o problema

Antes de mais nada, esse erro pode ser iniciado por problema bem simples, mas que irá fazer você perder muitas horas de trabalho até achar.

Um simples espaço em branco antes de um arquivo <?php, poderá ocasionar o problema.

Também, outro detalhe simples, é na hora de encerrar um arquivo com o ?>, e acabar deixando um espaço ou nova linha em branco no final do arquivo.

Por isso, diversos frameworks, não usam o ?> para encerrar os arquivos.

Dicas para para ajudar a não ter esse erro

  • Procurar por espaço/Tab/enter antes de abrir tag PHP e depois de fechar
  • Quando utilizar arquivos em UTF8, certificar-se de estar usando o UTF8 sem BOM

Caso esse post não tenha lhe ajudado, vamos ao stack overflow, pois lá tem um link com explicação completa do erro.

String Length: Descubra o tamanho de uma string com strlen

Está procurando sobre string length? Então, você está no lugar certo. Neste artigo vou falar um pouco sobre como descobrir o tamanho de um string no PHP utilizando a função strlen.

Definição da função strlen

strlen ( $string )

A função strlen irá retornar o total de caracteres, incluindo espaços, que existem no parâmetro de entrada.

Essa função é muito utilizada para comparação de tamanhos ou verificar se foi passado algum valor para um determinado parâmetro.

Veja os exemplos abaixo de string length com strlen

No exemplo abaixo vamos utilizar a função strlen para verificar se o parâmetro existe ou foi definido.

if(strlen($input) == 0)
      die('A variável $input não pode ser vazia');

No próximo exemplo, vamos retornar o tamanho total da string inserida na função strlen.

echo strlen('Qual o tamanho dessa string?'); // irá retornar o inteiro 28

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...