30 melhores práticas em PHP para iniciantes

15:23

Voltando às origens, linguagem PHP, já que ultimamente só tenho publicado aqui no meu site materiais sobre Linux e C/C++. Esta é uma versão em português do excelente artigo de Glen Stansberry, encontrado originalmente em inglês, no seguinte link: http://net.tutsplus.com/tutorials/php/30-php-best-practices-for-beginners/. Acredito que seja muito válido reproduzi-lo aqui traduzido. Dados os devidos créditos, vamos ao que interessa. PHP é a linguagem de programação mais utilizada para web do mundo. Aqui estão trinta e duas boas e aconselháveis práticas para programadores iniciantes (e também para os experientes) que desejam obter uma melhor compreensão dos fundamentos.

1. Seja amigo do manual do PHP
Se você é novo em PHP, então é hora de se familiarizar com essa excelente ferramenta que é o manual do PHP. O manual PHP é extremamente minucioso e tem comentários verdadeiramente úteis seguindo cada artigo. Antes de fazer perguntas ou sair tentando descobrir um problema sozinho, reserve algum tempo e consulte o manual. Há probabilidades da resposta à sua dúvida já está listada em um comentário em um dos artigos no site PHP.net.

2. Ligue o Error Reporting
O Error Reporting em PHP é muito útil. Você vai encontrar bugs em seu código que você pode não ter visto antes, já que nem todos os bugs param a execução da aplicação. Você pode usar diferentes níveis de rigor na informação, mas E_ALL irá mostrar-lhe a maioria dos erros, críticas e advertências. Uma vez que você transferiu sua aplicação para a produção, você obviamente deve desligar o Error Reporting, ou então os visitantes irão ver erros estranhos que eles não entendem.

3. Teste uma IDE
IDE – Integrated Development Environments – são ferramentas úteis para qualquer desenvolvedor. Uma IDE fornece ferramentas como: * highlighting de sintaxe * autocomplete * alertas de erro * refatoração (retrabalho) Há muitas outras funcionalidades. Há muitas IDEs poderosas e com suporte PHP.

IDE

4. Teste um Framework
Você pode aprender muito sobre o PHP apenas testando frameworks. Frameworks como CakePHP ou CodeIgniter permitem-lhe criar rapidamente aplicações PHP, sem ter que ser um especialista na linguagem. De certa forma, eles são quase como um treino em PHP que mostra o que uma aplicação deve ter, e mostra-lhe os conceitos de programação importantes (como a que separa a lógica do design, etc.)

5. Aprenda sobre DRY
DRY – Don’t Repeat Yourself(ou simplesmente, não se repita) – é um conceito de programação valioso, não importa qual seja a linguagem. Programação em DRY, como o nome indica, é garantir que você não escreva código redundante. Aqui está um exemplo de Reinhold Weber:

DRY

Este código…

$mysql = mysql_connect('localhost', 'reinhold', 'secret_hash');
mysql_select_db('wordpress') or die("cannot select DB");

Agora, com a abordagem DRY…

$db_host = 'localhost';
$db_user = 'reinhold';
$db_password = 'secret_hash';
$db_database = 'wordpress';
 
$mysql = mysql_connect($db_host, $db_user, $db_password);
mysql_select_db($db_database);


6. Indente seu código e use espaços em branco para melhor uma legibilidade
Se você não usa identações e espaços em branco no seu código, o resultado parece uma pintura de Jackson Pollack. Garanta que seu código seja legível e fácil de pesquisar, assim será mais fácil alterá-lo no futuro. IDEs e editores avançados geralmente adicionam recuos automaticamente.

7. Organize seu código em camadas
Organizar seus aplicativos em camadas, nada mais é do que separar os diferentes componentes do código em diferentes partes. Isso permite que você altere seu código facilmente no futuro. No site NETTUTS, Jason Lengstorf escreveu um excelente artigo sobre, como organizar sua aplicação PHP em camadas pode facilitar a manutenção.

8. Use sempre <?php ?>
Muitas vezes os programadores tentam encurtar ou substituir a tag PHP. Aqui estão alguns exemplos mais comuns:

<? echo "Hello world"?>
<?="Hello world"; ?>
<% echo "Hello world"; %>


9. Use uma convenção de nomes consistente e significativa
Isto não é apenas para seu próprio bem. Não há nada pior do que tentar encontrar o significado em algumas convenção de nomes sem sentido de outros programadores. Ajude a si e aos outros utilizando nomes que tenham sentido para suas classes e funções.

10. Sempre utilize comentários
Além de usar espaços em branco e indentações, você também deve usar comentários para documentar e organizar o seu código. Você vai agradecer a si mesmo mais tarde, quando precisar encontrar alguma coisa num código antigo, ou mesmo se você simplesmente não lembrar o que faz determinada função. Será útil também para qualquer pessoa que precise analisar seu código.

11. Use MAMP/WAMP
MySQL é o mais popular gerenciador de banco de dados usado com PHP (embora não seja o único). Se você está querendo criar um ambiente local para desenvolver e testar suas aplicações, procure instalar o MAMP (Mac) ou WAMP (Windows). Instalar o MySQL na unha pode ser um processo tedioso, e ambos os pacotes de software são completos(Apache, PHP e MySQL) e instalam tudo de uma só vez.

MAMP

12. Dê limites aos seus scripts
Colocar um limite de tempo em seus scripts PHP é uma coisa muito perigosa. Haverá momentos em que seus scripts iram falhar, e quando o falharem, você vai querer usar a função set_time_limit para evitar loops infinitos e estouro de tempo limite da conexão de dados. A função set_time_limit coloca um limite de tempo em segundos para a execução de um script (o padrão é 30). Se o script ultrapassar esse limite em execução, um erro fatal será acionado.

13. Use objetos (ou POO)
Programação orientada a objetos (POO) usa objetos para representar partes da aplicação. Não é apenas uma maneira de quebrar o código em partes, mas também reduz a repetição de código e torna muito mais fácil a manutenção.

14. Saiba a diferença entre as simples e duplas
É mais eficiente usar aspas simples em strings quando o analisador não tiver que passar pelo crivo de olhar para caracteres de escape e outras coisas que as aspas duplas permitem. Sempre que possível, use aspas simples.

15. Não coloque phpinfo() no seu webroot
Phpinfo() é uma coisa bonita. É facilmente criada com apenas a linha abaixo: <?php phpinfo(); ?> e colocando-o em algum lugar do seu servidor, você pode imediatamente saber tudo sobre as configurações do mesmo. Porém, muitos novatos colocam um arquivo com phpinfo() no webroot do servidor de hospedagem. Esta é uma falha de segurança, pois se esta página for visualizada por qualquer um, ela poderá significar a ruína do seu servidor. Certifique-se que o phpinfo() está em um local seguro, e sempre use este procedimento, exclua-o assim que não precisar mais dele.

phpinfo

16. Nunca diga toda a verdade a seus usuários
Se seu aplicativo tem um formulário de login, você deve sempre assumir que eles vão tentar introduzir códigos maliciosos. (Não estou sugerindo que seus usuários são pessoas más. É apenas uma boa prática utilizar esta mentalidade.) Uma ótima maneira de manter o seu site protegido de hackers é sempre inicializar suas variáveis para proteger o seu site de ataques XSS. No PHP.net tem um exemplo de um formulário devidamente protegido com variáveis inicializadas:

<?php
if (correct_user($_POST['user'], $_POST['password']) {
    $login = true;
}
if ($login) {
    forward_to_secure_environment();
}
?>


17. Armazene senhas criptografadas
Muitos novatos PHP frequentemente guardam dados importantes, como senhas no banco de dados sem aplicar qualquer criptografia. Considere usar MD5 para criptografar senhas antes de guarda-las em um banco de dados. echo md5('myPassword'); // renders - deb1536f480475f7d593219aa1afd74c

18. Use uma ferramenta gráfica para modelar banco de dados
Se você está encontrando dificuldades para modelar e alterar as bases de dados de suas aplicações, você pode pensar em usar uma ferramenta gráfica. Usuários do MySQL podem trabalhar com DBDesigner e MySQL Workbench para projetar visualmente seus bancos de dados.

Workbench

19. Use um buffer de saida
Buffer de saída é uma maneira simples de melhorar consideravelmente o desempenho e a velocidade do seu script PHP. Sem buffer de saída, o script irá mostrar o código HTML da página como é processado – em pedaços. Adicionar um buffer de saída permitirá que o PHP armazene o HTML como uma variável e a envie para o navegador de uma vez. Para ativar o buffer de saída, basta adicionar ob_start() no topo do arquivo.

<!DOCTYPE html>
<?php ob_start('ob_gzhandler'); ?>
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>untitled</title>
</head>
<body>
     
</body>
</html>
<?php ob_end_flush(); ?>


20. Proteja seu script de SQL injection
Se você não escapa os caracteres utilizados em strings SQL, seu código é vulnerável a SQL injection. Você pode evitar isso usando os mysql_real_escape_string, ou usando as declarações preparadas. Aqui está um exemplo de mysql_real_escape_string em ação:

1
$username=mysql_real_escape_string($GET[‘username’]);

e em uma declaração preparada:

$id = $_GET['id'];
$statement = $connection->prepare( "SELECT * FROM tbl_members WHERE id = ?" );
$statement->bind_param( "i", $id );
$statement->execute();


21. Teste ORM
Se você usa o conceito de object-oriented em PHP, então você pode usar a elegância de um objeto de mapeamento relacional (ORM). Um ORM permite converter dados entre bancos de dados relacionais e objeto-linguagens de programação orientada. Em suma: um ORM permite que você trabalhe com bases de dados da mesma maneira que você trabalha com classes e objetos no PHP. Há uma abundância de bibliotecas ORM para PHP como o Propel, e também construções em frameworks como o CakePHP.

22. Cache de dados orientado à páginas
Cache de dados orientado à páginas PHP é uma excelente idéia para melhorar a carga e performance do seu script. Não é tão difícil de criar e recuperar arquivos de conteúdo estático, com a ajuda do nosso bom amigo ob_start(). Aqui está um exemplo retirado da Snipe.net: // No topo do script

$cachefile = 'cache/'.basename($_SERVER['SCRIPT_URI']);
$cachetime = 120 * 60; // 2 hours
// Serve from the cache if it is younger than $cachetime
if (file_exists($cachefile) && (time() - $cachetime < filemtime($cachefile))) {
include($cachefile);
echo "<!-- Cached ".date('jS F Y H:i', filemtime($cachefile))." -->";
exit;
}
ob_start(); // start the output buffer
// Your normal PHP script and HTML content here
// BOTTOM of your script
$fp = fopen($cachefile, 'w'); // open the cache file for writing
fwrite($fp, ob_get_contents()); // save the contents of output buffer to the file
fclose($fp); // close the file
ob_end_flush(); // Send the output to the browser

Este bloco de código irá utilizar uma versão em cache de uma página que está guardada a menos de 2 horas.

23. Use um sistema de cache
Se você está querendo um sistema de cache mais robusto, há uma cache de scripts PHP que na opinião de muitos é mais completo do que o exemplo acima. * Memcached * APC * XCache * Zend Cache * eAccelerator.

Memcached

24. Validar dados de cookies
Os dados de cookies, como todos os dados que trafegam na Web, podem ser prejudicial. Você pode então, validar os dados de cookies, tanto através da função htmlspecialchars(), como também com, mysql_real_escape_string ().

25. Use um sistema de cache de arquivos
Além de usar um cache do banco de dados do sistemas como cache de memória, você também pode querer experimentar um sistema de templates para aumentar o desempenho em suas aplicações PHP. O Smarty é um sistema robusto de templates e tem cache incorporada.

26. Depure seu código
Depurar seu código com uma ferramenta como o Xdebug pode ajudar a detectar rapidamente gargalos e outros problemas potenciais em seu código. Algumas IDE’s como o Netbeans, também possuem funcionalidades de debug.

27. Padrão de codificação
Uma vez que você tenha aprendido o essencial do PHP, você pode começar a aprender também sobre um padrão de codificação. Existem diferentes padrões(por exemplo Zend e PEAR), e começar a trabalhar com um deles vai ajudá-lo com a consistência de sua codificação à longo prazo.

28. Não use funções dentro de loops
Sua aplicação perde performance quando você inclui funções dentro de loops. Quanto maior o loop que você tem, maior o tempo de execução.

29. Não crie variáveis extras
Algumas pessoas gostam de experimentar e tornar seu código mais atraente, colocando o conteúdo de variáveis pré-definidas em outras variáveis. Isto é redundância e pode dobrar o consumo de memória. Google Code tem maus e bons exemplos de uso de variável: Errado

$description = strip_tags($_POST['description']);
echo $description;

Correto

echo strip_tags($_POST['description']);


30. Sempre use a mais atual versão do PHP
Enquanto isso parece ser uma coisa do senso comum, muitas pessoas não atualizam o PHP. Há grande diferença de desempenho entre as versões 4 e 5 do PHP. Verifique se seu servidor está atualizado.

31. Reduza a quantidade de consultas ao banco de dados
Se você pude enxugar ao máximo o número de consultas ao banco de dados, a performance do seu script PHP irá melhorar. Existem ferramentas como Stace (Unix) e Process Explorer (Windows) que lhe permitem encontrar processos redundantes e como você pode combiná-los.

Compartilhe com seus amigos programadores, faça sua parte e mantenha seus sistemas sempre atualizados e seguros.

Quer um servidor de Hospedagem seguro? Com Firewall? Sistema de Detecção de Intrusão? Contrate um plano de Hospedagem da Turbosite. Servidores ultra rápidos e com segurança de última geração. Clique aqui!