Padrões e Metodologias em PHP?

Porque PHP não é a linguagem mais utilizada pelas corporações? Porque muitos desenvolvedores optam por outras linguagens em vês de continuar ou utilizar PHP?

Questões como estas surgem todo dia, toda vês que alguém começa a programar em PHP. E talvez a resposta mais adequada seja a falta de um padrão, uma especificação forte em cima da linguagem.

php-logo

PHP é responsável pelo surgimento dos CMS’ s mais usados no Brasil e no mundo, mas cada um cria seu padrão e alguns nem padrão se quer tem.

Mas o grande pecado do PHP realmente continua sendo uma falta de padrão. Nem precisamos falar da questão de compatibilidade total entre versões, isso não é perfeito em nenhuma linguagem, mas se compararmos a versão do PHP4 com o PHP5, chegamos a clássica questão de configurar o  httpd.conf para o php4 (porta 80) e criar um httpd5.conf para o php5 no apache assim evitamos que seu site, blog, etc, saia do ar porque você usava a abertura de código <? Em vês de <?PHP.

Sito está, porque é a clássica de todo código legado php4.

Alguns puristas podem intervir e dizer que:

Assim a linguagem é mais livre, tem maiores chances de crescimento, comunidade, e todas as velhas histórias que cansamos de houvir em toda discussão.

Claro que sou contra uma grande empresa ser a dona da linguagem, mas temos de admitir que a falta de um dono(livre ou não), gera uma falta de padrão.

Com o lançamento da versão 5.3, comecei a ouvir algumas questões de padronização e um grupo para tais questões se formando a o horizonte.

Para efetivar uma melhora nos códigos em PHP, resolvi seguir   Walker de Alencar Oliveira, que define no documento: PHP Coding Standards uma padronização para utilização do nosso código php. Siga também as dicas e tente manter-se atualizado e colaborativo.

Fonte:

PHP Coding Standards

blog.walkeralencar

Abraço,
Ederson Melo – @edersonmelo

Variáveis de ambiente e PHP

Embora muito utilizadas no PHP, as variáveis de ambiente como o nome diz, são variáveis do ambiente do servidor web e não da linguagem php.
Através do uso destas informações, pode se descobrir qual o browser que o cliente utiliza, IP para votações e chats, entre muitas outras funcionalidades.

Para se obter o valor de uma variável de ambiente a função getenv é utilizada no php:

getenv(“nome_da_variável”);

Um exemplo que é muito utilizado é a verificação de tipo de método de envio de dados de um formulário.
Por exemplo, se meu formulário utiliza apenas o método post e não gostaria que alguém utilizasse get, poderíamos criar o código abaixo aproveitando as variáveis de ambiente:

if(getenv(“REQUEST_METHOD”) == “GET” )
echo “O método utilizado é GET e não aceito pelos padrões de formulários, utilize o método POST, obrigado!”;

Agora já conhecemos um deles o   REQUEST_METHOD que mostra o envio de dados utilizado.

Bom já sabemos que a função getenv é responsável por retornar os valores das diversas variáveis de ambiente para um programa em php, então abaixo a tabela com as principais variáveis:

AUTH_TYPE Método de autenticação que só está disponível se o servidor disponibilizar este recurso.
CONTENT_LENGHT Tamanho dos dados recebidos pelo servidor ( bytes )
CONTENT_TYPE Tipo MIME dos dados enviados
GATEWAY_INTERFACE Versão CGI fornecida pelo servidor
HTTP_ACCEPT Uma lista dos tipos MIME aceitos pelo cliente
HTTP_USER_AGENT Nome e versão do browser utilizado no cliente
PATH_INFO Caminho acessado pelo cliente para alguns scripts.
QUERY_STRING Armazena informações passadas através da URL após o ?
REQUEST_METHOD Método utilizado para envio ( Post / Get )
REMOTE_HOST Nome do host da origem da requisição
REMOTE_ADDR IP do usuário
REMOTE_USER Nome do usuário ( Se o servidor permitir autenticação)
REMOTE_INDENT Nome do usuário remoto ( apenas para servidores que suportam o padrão RFC 931 )
SERVER_SOFTWARE Servidor e Software utilizados
SERVER_NAME Nome do servidor ou IP
SERVER_PROTOCOL Nome e versão do protocolo utilizado
SERVER_PORT Número da porta utilizada na requisição
SCRIPT_NAME Caminho para o script que está sendo executado

Abraço,
Ederson Melo – @edersonmelo

Pagamentos online com paypal e PHP

O uso do Paypal em sites tem sido muito empregado nos últimos tempos. Mas quando vamos pesquisar na web sobre o assunto, acabamos encontrando muitos posts, porém, todo iguais e isso inclui os erros também.  Encontrei 20 posts e todos iguais copiados de um único blog, do qual as configurações informadas não funcionam e os links para baixar o “API” em PHP não existe.

O objetivo do post é mostrar a simplicidade na utilização do Paypal em sites PHP.

paypal_logo_edersonmelo

Então vamos começar com o básico. O arquivo para download aqui ou sourceforge(que recomendo por estar sempre atualizado).

Extrair os arquivos do .zip, que devem conter os seguintes arquivos:
config.inc.php
Configuração do script
global_config.inc.php
Funções globais que serão usadas no script
payment.php
Botão para pagamento pré-configurado
orderform.php
Formulário pré-configurado para testes
process.php
Serve para processar o envio das informações de transação para o PayPal
success.php
Mensagem de resposta de sucesso ao enviar a transação para o PayPal
cancelled.php
Mensagem de Erro quando a transação falha.
ipn.php
Recebe informações da API do PayPal e interpreta os resultados
ipn_success.php
Executado somente se a transação tiver sido executado com sucesso
ipn_error.php
Executado somente se a transação deu erro

Fora o .css que não é preciso comentar pois nada vamos alterar nele.

Dentro da pasta includes você deve configurar o arquivo  config.inc.php, com a conta que você deve ter criado no PayPal.

<?php
/*
* config.inc.php
*
* EDERSON MELO
* Copyright (c) 2004 PayPal Inc
* Released under Common Public License 1.0
* http://opensource.org/licenses/cpl.php
*/

//Configuration Settings

$paypal[business]=”emaildaconta@meumail.com”;
$paypal[site_url]=”http://www.meusite.com/&#8221;;
$paypal[image_url]=””;
$paypal[success_url]=”paypal/success.php”;
//$paypal[success_url]=”paypal/ipn/ipn.php”;
$paypal[cancel_url]=”paypal/error.php”;
$paypal[notify_url]=”paypal/ipn/ipn.php”;
$paypal[return_method]=”2″; //1=GET 2=POST
$paypal[currency_code]=”USD”; //[USD,GBP,JPY,CAD,EUR]
$paypal[lc]=”US”;

$paypal[url]=”http://www.paypal.com/cgi-bin/webscr&#8221;;
//$paypal[url]=”https://www.paypal.com/cgi-bin/webscr&#8221;;
//$paypal[url]=”https://www.sandbox.paypal.com/cgi-bin/webscr&#8221;;
$paypal[post_method]=”fso”; //fso=fsockopen(); curl=curl command line libCurl=php compiled with libCurl support
$paypal[curl_location]=”/usr/local/bin/curl”;

$paypal[bn]=”toolkit-php”;
$paypal[cmd]=”_xclick”;

//Payment Page Settings
$paypal[display_comment]=”0″; //0=yes 1=no
$paypal[comment_header]=”Comments”;
$paypal[continue_button_text]=”Continue >>”;
$paypal[background_color]=””; //””=white 1=black
$paypal[display_shipping_address]=””; //””=yes 1=no
$paypal[display_comment]=”1″; //””=yes 1=no

//Product Settings
$paypal[item_name]=”$_POST[item_name]”;
$paypal[item_number]=”$_POST[item_number]”;
$paypal[amount]=”$_POST[amount]”;
$paypal[on0]=”$_POST[on0]”;
$paypal[os0]=”$_POST[os0]”;
$paypal[on1]=”$_POST[on1]”;
$paypal[os1]=”$_POST[os1]”;
$paypal[quantity]=”$_POST[quantity]”;
$paypal[edit_quantity]=””; //1=yes “”=no
$paypal[invoice]=”$_POST[invoice]”;
$paypal[tax]=”$_POST[tax]”;

//Shipping and Taxes
$paypal[shipping_amount]=”$_POST[shipping_amount]”;
$paypal[shipping_amount_per_item]=””;
$paypal[handling_amount]=””;
$paypal[custom_field]=””;

//Customer Settings
$paypal[firstname]=”$_POST[firstname]”;
$paypal[lastname]=”$_POST[lastname]”;
$paypal[address1]=”$_POST[address1]”;
$paypal[address2]=”$_POST[address2]”;
$paypal[city]=”$_POST[city]”;
$paypal[state]=”$_POST[state]”;
$paypal[zip]=”$_POST[zip]”;
$paypal[email]=”$_POST[email]”;
$paypal[phone_1]=”$_POST[phone1]”;
$paypal[phone_2]=”$_POST[phone2]”;
$paypal[phone_3]=”$_POST[phone3]”;

?>

O Paypal pode ser bem incrementado e criado configurações intermediárias durante o processo de pagamento. Como adicionar loading e ícones personalizados no seu site.

Por falando em ícones, no site fineicons encontrei os principais cartões de pagamento, até mais do que aceito pelo Paypal e são excelentes para incrementar seu site.

Espero que o post tenha real utilidade e que mais a frente possamos estar discutindo maiores implementações.

Abraço,
Ederson Melo – @edersonmelo

Manipulação de código HTML

Em algum momento do desenvolvimento utilizando php podemos precisar  manipular códigos HTML. O php oferece algumas funções pré definidas para casos deste tipo.

nl2br()
Função transforma todos os caracteres de nova linha em código de quebra de linha em HTML, representado por <BR>. Tipicamente o caractere de nova linha é representado por ’ ’.

Exemplo:
$texto = “Eai pessoal Funciona correto? “;
$texto = nl2br( $texto ); // $texto == ” Eai pessoal<BR> Funciona correto? “

urlencode()
Função para converter links em um formato permitido pelo browser. Um típico exemplo da utilização dessa função é quando passamos parâmetros pela url.
Exemplo:
$link = “edersonmelo.com?nome=Éderson Melo”;
$link = urlencode( $link ); // $link == “edersonmelo.com?usuario=Éderson+Melo”

urldecode()
Função contrária a anterior. Ele decodifica a string para o formato original.

Exemplo:
$link = ” edersonmelo.com?usuario=Éderson+Melo “;
$link = urldecode( $link ); // $link == ” edersonmelo.com?usuario=Éderson Melo “

htmlspecialchars()
Função utilizada para substituir os caracteres especiais da linguagem HTML.
’&’ (comercial) por ’&amp;’
’”’ (aspas duplas) por ’&quot;’
’<’ (sinal de menor) por ’&lt;’
’>’ (sinal de maior) por ’&gt;’

htmlentities()
Função semelhante a anterior. A diferença é que essa faz uma substituição mais completa, ela troca todos os caracteres que tem representação especial no HTML.

Exemplo:
$texto = “Queremos ser o 1º blog”;
$texto = htmlentities( $texto ); // $texto == ” Queremos ser o 1&ordm; blog“;

Abraço,
Ederson Melo