Arquivos da categoria: PHP

Frameworks PHP – Yii, Laravel, Phalcon e afins

Olá pessoal,

Recentemente estava dando uma olhada nos últimos frameworks para PHP e analisando as últimas novidades de cada um.

Após pesquisar bastante, vi que a maioria esmagadora, como eu, que usa Yii2 continua no Yii2 por ser um framework full-stack, enterprise e consolidado no mercado a mais de 2 anos bem estável. A única coisa que vi algumas pessoas falando é que para micro-framework talvez o Laravel seja melhor por permitir rotas no estilo Go ou NodeJS.

Mas de modo geral cada um acaba usando um ou outro dependendo do caso, então se você quer uma aplicação de porte menor ou um microframework, use o Laravel e se você quer uma aplicação de médio ou grande porte use o Yii2. O Yii2 segue a mesma idéia do ZendFramework, ser um framework enterprise para PHP Full-Stack. Tem até alguns usuários que transformaram o Yii2 em micro-framework, mas não é o seu objetivo (REF).

Porém um framework que acompanhei no passado sobreviveu até hoje e recebi a notícia de que estava em sua versão 2.0 e bem estável e este sim, talvez seja uma boa opção se alguém precisa de um pouco mais de performance, o Phalcon (Tutorial). A diferença dele para qualquer outro framework para PHP é que ele é feito em C e não em PHP, o que garante uma performance muito melhor, pois suas classes são expostas para o PHP e todo o processamento até chegar no método que atende a requisição é feito em C mesmo. Aqui tem uma lista dos diversos tópicos que ajudam a entender cada pedaço dele (Tutorial 2).

 

Obrigado e até o próximo post pessoal.

PHP – Script para executar uma limpeza de e-mails inválidos e ruins em um arquivo

Olá,

Por muitas vezes precisamos exportar uma base de e-mails para ferramentas de e-mail marketing e ao importar a base de dados nessas ferramentas por diversas vezes são importados e-mail inválidos, escritos de forma incorreta, faltando um ponto e ao enviar uma campanha a ferramenta detecta esses problemas e o IP do sender do e-mail marketing é bloqueado.

Para resolver estes problemas, resolvi criar um script para remover os e-mails que são considerados como inválidos (ex.: aqueles domínios de e-mails temporários, que um usuário usa só pra se cadastrar no seu site e que no final você é prejudicado por enviar um e-mail para estes domínios) e para consertar os domínios mais comuns escritos de forma errada.

Analisei uma base real de 300mil registros e detectei que apenas 1/3 da base continha e-mail escritos de forma correta e com domínios válidos através de um script que fiz para saber quantos e-mail estavam escritos errados e quantos continham domínios inválidos antes de realmente corrigir. De toda a base, apenas 5 e-mails tinham domínio inválido e mais de 200mil usuários escreveram o domínio do e-mail de forma incorreta, ex: Ao invés de @gmail.com colocavam @gmai.com ou @gmailcom.

Após o término do script o processo removeu apenas 5 dos 300mil e pude ainda usar os outros 299995 como base limpa.

Agora você imagina o quanto de melhora em relação aos resultados do e-mail marketing pôde ser obtido com este simples script.

 

Baixe o script gratuitamente no repositório:

https://github.com/prsolucoes/clean-emails

 

Não é obrigatório, só peço que as novas regras que forem úteis e puderem ser compartilhada, que você faça um pull-request para que cada vez mais o script fique melhor.

PHP – Atualizando o PHP no Mac – OSX

Olá pessoal,

Se você possui um Mac e deseja atualizar a versão do PHP que vem nele, existem comandos simples que você pode executar no terminal para realizar esta façanha de forma simples.

Segue abaixo uma lista com os comandos para cada versão (basta copiar e colar no terminal que o script faz todo o restante para você):

PHP 7.0 (Versão estável):

curl -s http://php-osx.liip.ch/install.sh | bash -s 7.0

PHP 5.6:

curl -s http://php-osx.liip.ch/install.sh | bash -s 5.6

PHP 5.5:

curl -s http://php-osx.liip.ch/install.sh | bash -s 5.5

PHP 5.4 (Esta versão já não é mais utilizada):

curl -s http://php-osx.liip.ch/install.sh | bash -s 5.4

PHP 5.3 (Esta versão já não é mais utilizada):

curl -s http://php-osx.liip.ch/install.sh | bash -s 5.3

Lembrando que este script não modifica ou apaga a versão do PHP que vem nativamente com o OSX, por isso ele instala em uma pasta diferente. Para você sobrescrever o comando “php” do OSX para apontar para a sua nova versão instalada, faça o seguinte:

1 – Edite o arquivo “.bash_profile”:

nano ~/.bash_profile

2 – Adicione as linhas e salve o arquivo:

export PATH=/usr/local/php5/bin:$PATH

3 – Atualize os comandos no terminal:

source ~/.bash_profile

 

Para verificar a versão do PHP e saber se tudo deu certo, basta executar:

/usr/local/php5/bin/php -v

Por padrão o script “packager” é instalado em “/usr/local/packer” e o PHP é instalado em “/usr/local/php5”. Ao longo da instalação o script pedirá sua senha de usuário, mas fique tranquilo, pois ele pede para copiar os arquivos para as pastas internas do sistema.

Caso você queira saber mais sobre como executar o “pecl”, alterar o “php.ini”, “memcached”, acesse o site oficial: http://php-osx.liip.ch/ e neste mesmo site você fica sabendo de todas as versões PHP suportadas.

Obrigado e até o próximo post pessoal.

PHP – Composer – Facilitando a vida de quem usa

Olá pessoal,

Para quem usa o composer, o gerenciador de dependências para PHP (http://www.getcomposer.org) sabe o quanto é tediante ficar escrevendo o comando completo, ex:

php /Users/usuario/Developer/php/composer.phar install

Porém, para usuários de Mac e Linux, existe uma solução bastante simples e útil que vai facilitar a vida de todo mundo, que é a criação de um ALIAS para o comando completo. Abra o arquivo “.bash_profile” do seu usuário e adicione o ALIAS para o comando completo do composer. Exemplo:

Edite o seu bash_profile:

nano ~/.bash_profile

Adicione a linha abaixo e salve o arquivo:

alias composer="php [pasta aonde se encontrar o composer]/composer.phar"

Atualize a sessão do terminal com os novos comandos:

source ~/.bash_profile

Agora basta você executar no terminal:

composer install

 

Obrigado e até o próximo post pessoal.

PHP – Yii Framework 2.0 – Criando um novo projeto do tipo básico

Olá pessoal,

Resolvi escrever um tutorial de como usar o composer para criar um projeto simples com o Yii Framework 2.0. Depois de muito quebrar a cabeça consegui achar os comandos corretos para instalar e criar uma aplicação básica com o Yii Framework 2.0, pois tem muito material das versões betas e RC e fica um pouco confuso saber como proceder na versão final que saiu.

De forma resumida precisamos instalar o composer, adicionar o repositório no composer e criar uma aplicação Yii com o composer.

1 – Instalando o composer (ao instalar o composer, um arquivo composer.phar será baixado para a pasta aonde você está executando o comando, portanto, execute o comando abaixo em uma pasta que servirá como repositório deste arquivo, pois em todos os comandos que irão usar o composer você precisará passar o caminho deste arquivo como parâmetro):

curl -sS https://getcomposer.org/installer | php

Se o comando acima falhar, use o comando abaixo:

php -r "readfile('https://getcomposer.org/installer');" | php

2 – Adicionando o repositório das dependências do projeto:

php composer.phar global require "fxp/composer-asset-plugin:~1.1.1"

3 – Criando a aplicação básica com o composer(execute este comando na raiz do seu servidor web, pois ele criará uma pasta chamada “meu-projeto” com os arquivos dentro):

php composer.phar create-project yiisoft/yii2-app-basic meu-projeto

4 – Se você usa Apache, adicione na raiz do seu projeto o arquivo “.htaccess” (meu-projeto/.htaccess) com o conteúdo:

Options -Indexes
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ web/$1 [L]
</IfModule>

# Deny accessing below extensions
<Files ~ "(.json|.lock|.git)">
Order allow,deny
Deny from all
</Files>

# Deny accessing dot files
RewriteRule (^\.|/\.) - [F]

5 – Adicione na pasta “web” do seu projeto outro arquivo “.htaccess” (meu-projeto/web/.htaccess) com o conteúdo:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

Acesse no seu navegador: http://localhost/meu-projeto

Obs: Eu coloquei o comando php seguido do composer.phar, mas você deve colocar o caminho aonde o seu composer.phar se encontra em seu servidor. Ex: php /home/user/php/composer.phar [comando]

Obrigado e até o próximo post pessoal.

PHP – Yii Framework 2.0

Olá pessoal,

Acabou de ser lançado o Yii Framework 2.0.

Framework que eu particularmente utilizo devido a sua robustez, arquitetura, segurança e ao mesmo tempo simplicidade para fazer uma aplicação enterprise.

Algumas coisas que se destacaram nesta versão que vale a pena citar aqui:

  • O gerador de códigos conhecido como Gii agora possui um gerador via web e via console.
  • Framework com foco em testes.
  • Utiliza frameworks conhecidos no mercado e especificações PSR.
  • Debugger integrado (não precisamos mais de plugins para visualizar o que acontece na aplicação).
  • A parte de segurança foi feia com a ajuda de 2 especialistas em segurança com PHP, que revisaram e rescreveram esta parte.
  • O Yii 1 já era um dos frameworks top em performance, e a versão 2 foi reformulada pra ter um desempenho ainda melhor, inclusive na parte relacionada ao banco de dados (ActiveRecord).
  • Uma coisa que me incomodava no Yii 1 era o fato de você alterar um único campo no modelo e ao dar o “save/update” ele alterava todos os campos (montava um update com todos os campos) da tabela. Agora na versão 2 ele controla isso internamente e monta a query de “update” somente com os campos que você modificou.
  • O Yii Framework 2 vem com suporte nativo a RESTful, possibilitando nativamente escrever API RESTful de forma simplificada.
  • A parte de autenticação agora possui suporte a autenticação externa, vindo com suporte nativo a OAuth1, OAuth2 e OpenID, ou seja, você já pode integrar com autenticação via Google e Facebook por exemplo de forma simples. Veja o exemplo no site oficial para entender a simplicidade do negócio.
  • Todos os widgets vem com suporte ao Bootstrap.
  • Vários helpers adicionados para trabalhar com elementos html, gerar links e todas aquelas coisas comuns em que as vezes criávamos funções estáticas para ter o mesmo resultado.
  • Criação de modelo para trabalhar com formulários simplificado.
  • Criação de regras para as classes ActiveRecord e Model (antigo CFormModel), simplificados.
  • Uso de namespace em todo o framework.
  • A arquitetura de pastas foi reformulada e proporcionou ainda mais a separação com o código do projeto, pois ele foi ainda mais projetado nesta versão para ser extensível e modular.
  • O componente de envio de e-mail padrão é o Swift com suporte a engine de templates do Yii.

Com todos esses recursos, potência, segurança e cuidado que os engenheiros do Yii possuem ao fazer o framework, que outro framework vai conseguir bater de frente com ele?

Fica aqui o meu parabéns a equipe de engenheiros que desde de sua versão 1 que eu uso até hoje, fizeram um excelente trabalho.

O link da notícia no site oficial é:
http://www.yiiframework.com/news/81/yii-2-0-0-is-released/

Obrigado e até o próximo post pessoal.

PHP – Configurando o PHPStorm 7/8 para reconhecer o YiiFramework

Olá pessoal,

Tenho visto que algumas pessoas que usam o PHPStorm 7/8 não estão conseguindo acessar recursos dinâmicos e interno do framework Yii (www.yiiframework.com) em seus projetos. Vou usar como exemplo para este post o projeto open-source que disponibilizei no GitHub e que também usa o Yii Framework:  https://github.com/prsolucoes/PHPDefaultProject/.

Para resolver este problema, a solução é simples e só demanda configuração diretamente pela IDE, porém de forma resumida precisamos “dizer” a IDE aonde está a pasta raiz do nosso projeto e excluir o arquivo “yiilite.php” da indexação do PHP.

Para isso acesse as configurações/settings do seu projeto e procure pelo menu “PHP > Framework Integration”. Marque a caixa “Enable framework integration” e ao lado selecione na lista a opção “Yii”.

Abaixo disso você terá uma treeview contendo as pastas e arquivos do seu projeto. Procure pela pasta “protected” e ao lado do nome da pasta(na coluna da direita da treeview) se você clicar aparecerá uma série de opções possíveis para você dizer à IDE o que esta pasta representa na integração com o YiiFramework, marque a opção “application base directory”.

Agora do lado esquerdo, procure pelo menu “File Types > PHP files (PHP)”. Na parte inferior do lado direito terá uma caixa de texto com a informação “Ignore files and folders”. Edite indo até o final dos arquivos já ignorados, acrescente um ponto e vírgula (caso já não tenha) e adicione o texto “yiilite.php;” (sem as aspas, claro).

Clique em OK na parte inferior da IDE e espere o índice do PHP ser refeito.

Faça um teste com o código de exemplo:

Yii::app()->db->create[aperte control+espaço ou command+espaço se for mac e verifique se aparece os possíveis comandos do Yii]

Segue algumas imagens do processo:

 

Um abraço e até o próximo post pessoal.

PHP – Usar aspas simples ou duplas para criar uma String?

Olá pessoal,

A um tempo atrás estava pesquisando sobre performance e um dos pontos levantados foi o fato de usar aspas duplas, pois para o interpretador do PHP custa muito mais processamento exibir uma frase do tipo:

"Nome: $nome"

Do que:

'Nome: ' . $nome

E para comprovar isso, usei o codepad.org para executar e medir o tempo de processamento de um script bem simples que realiza o teste nestes dois cenários.

O primeiro script que usa no teste aspas duplas está aqui:

https://gist.github.com/prsolucoes/bbb047c320f9e50e875f

O segundo script que usa no teste aspas simples está aqui:

https://gist.github.com/prsolucoes/7677b60d600feb6b091c

 

Resultado (média de tempo em MS para 3 execuções):

Com aspas duplas: 76ms

Com aspas simples: 60ms

 

São 16ms acrescentados no tempo de execução do script, simplesmente por suar aspas duplas. Imagina isso multiplicado por N em um sistema cheio de códigos utilizando aspas duplas por todo lado.

Espero que tenha ajudado.