5 Dicas para otimizar seu código PHP

Como estou um pouco ocupado demais, e sem idéias para posts, irei apenas dar 5 dicas básicas que todo programador PHP deveria saber, mas as vezes acabamos nos esquecendo por descuido etc.

Use o echo, e não o print

Apesar de as 2 terem o mesmo funcionamento, os construtores de linguagem echo e print tem uma leve diferença de processamento, e o echo é mais rápido na execução. Por não ser uma função propriamente dita, o echo não precisa de parênteses (), e ele aceita vários parâmetros, sendo também mais rápido um echo com vários parâmetros, do que concatenando strings.

Dê preferência as aspas simples ‘ ao invés das duplas “

Onde for possível utilize as aspas simples, pois como elas não tem que varrer a procura de variáveis  dentro, executam mais rápido. Portanto um echo ‘Com aspas Simples” executa melhor e mais rápido que um echo “Com Aspas Duplas“. A principal diferença entre as duas além da velocidade, é que seguinte:

$variavel = 'Texto simples';
echo '$variavel';
//Imprime $variavel
echo "$variavel";
//Imprime Texto Simples

Não utilize funções na chamada de loops

Evite ao máximo, fazer chamadas de funções como condições para loops, em cada vez que o loop for executado a função é também executada, por exemplo:

//Como não deve ser feito
for($i=0;$i <= count($total); ++$i)

//A maneira correta/mais eficiente
$count = count($total);
for($i=0;$i <= $count; ++$i)

Libere da memória variáveis inutilizadas

Aprender a usar o unset() pode ser muito útil para melhorar o desempenho de nossos aplicativos php, especialmente em arrays, onde o consumo de memória é mais elevado, então liberar as memórias com unset() é sempre recomendavel.

Utilize o Manual!

E agora acho que estou dando a melhor dica de todas, o manual do php é bastante completo, e também sempre traz exemplos feitos por usuários de como usar as funções e também melhorias/alternativas a elas.

Veja! 40 Tutoriais para construir ótimos aplicativos em CodeIgniter

Pra compensar um pouco a falta de posts no blog, desta vez irei apenas repassar um link com 40 tutoriais para criar aplicativos em CodeIgniter!

40 Tutoriais CodeIgniter

O motivo da falta de posts na verdade é a falta de tempo (leia-se World of Warcraft)! Fim de ano é uma correria danada, mas em breve mais posts!

O futuro do CodeIgniter

CodeIgniter

No último mês, muito se falou sobre o abandono do CodeIgniter por parte da EllisLab, empresa mantedora do CodeIgniter que o usa em seus 2 principais produtos, O CMS ExpressionEngine, e o MojoMotor. Estava-se falando que a mesma só pensava nos produtos dela e não estava nem ai pra comunidade, e realmente parece verdade.

O CodeIgniter não recebe uma boa atualização a tempos, ainda está faltando coisas básicas que encontramos em outros frameworks, como integração nativa a testes unitários, ORM, ACL, e etc.

Realmente, o CI pode não ser o mais robusto, mais completo dos frameworks, porém é leve, rápido e possui uma ótima comunidade. A EllisLab sabendo disso logo agiu, resolveu então criar o CodeIgniter Reactor, um branch do CI mantido por 6 “CodeIgniter Engineers” como eles estão chamando estes branches da comunidade, esses “CodeIgniter Engineers” serão responsáveis por atender a comunidade e fazer as mudanças que acharem necessárias para o CodeIgniter se manter vivo e atualizado, enquanto o branch oficial continuará sendo mantido pela EllisLab porém com menos frequência e mais testes, pois o mesmo é usado pelos seus produtos.

Mas a pergunta que fica é afinal, isto é bom ou ruim?
Ao meu ver, isso é muito bom pois esses “CodeIgniter Engineers” não só contribuirão com o código do CodeIgniter como irão verificar códigos da comunidade, inclusive já estão planejando um clone para o GIT para que as pessoas que não conhecem/gostam do mercury poderem contribuir para o CI.

Eu mesmo penso em usar o “CodeIgniter Reactor” que eu acredito que será atualizado mais frequentemente, e mais utilizado o que acarretará em mais recursos e correção de bugs. Porém os proprios “CodeIgniter Engineers” já avisaram que não irão fazer coisas mirabolantes, como implantar um ORM de cara ou algo do tipo, eles irão seguir a tendência, pois o CodeIgniter já é famoso pelo fato de se você precisa de algo é so instalar, ou seja, não tem ORM? Utilize o Datamapper ou o Doctrine, não tem Unit Testing? É fácil implementar o PHPUnit ou algo do tipo.

Além disso a própria EllisLab já tomou algumas decisões em relação ao CI 2.0 por exemplo, o suporte ao PHP4 finalmente foi totalmente excluído, agora os controllers e models são extendidos pela seguintes classes, CI_Controller e CI_Model, todos construtores de classes foram renomeados para __construct, seguindo o padrão do PHP5.

Conclusão

Acredito que com o CodeIgniter Reactor, o CodeIgniter só tem a ganhar! Só espero que os Engineer’s como estão sendo chamados levem com seriedade essa estória de serem os responsáveis pela comunidade, pois eles terão grande parte no futuro direto e indireto do CodeIgniter, enquanto a EllisLab deverá atualizar somente o que for necessário para seus produtos, o Reactor deverá receber o que é necessário para comunidade, independente de um produto ou não.

Mais informações: http://codeigniter.com/news/codeigniter_in_2011_reactor_core_uservoice/
http://philsturgeon.co.uk/blog/2010/12/ellislab-react-with-codeigniter-reactor

Criando um formulário de contato com o CodeIgniter

Este será um exemplo básico de um formulário de contato.
Enviar email com o codeigniter é realmente muito fácil, basta utilizar a library email.
Iremos trabalhar com 3 arquivos somente,
Um view (contato.php) um controller(contato.php) e um arquivo de config (email.php).

Deveremos criar eles na estrutura abaixo dentro de sua pasta application:
controllers/contato.php
config/email.php
views/contato.php

CodeIgniter – removendo o index.php e removendo o www da url. (url canonica)

Boa tarde a todos!

Dessa vez irei falar sobre remover o arquivo index.php de nossa aplicação no CodeIgniter, e também fixar o nosso domínio para um só! Ou seja uma tática SEO para não ficar com múltiplas URLS.

Primeiro vamos falar para o nosso CodeIgniter que a página index.php não deve mais existir! para isso devemos editar o arquivo config.php dentro da nossa pasta application.
Muito fácil, basta remover o conteudo da varíavel $config[‘index_page’] ficando igual o código abaixo.

/*
      |--------------------------------------------------------------------------
      | Index File
      |--------------------------------------------------------------------------
      |
      | Typically this will be your index.php file, unless you've renamed it to
      | something else. If you are using mod_rewrite to remove the page set this
      | variable so that it is blank.
      |
     */
    $config['index_page'] = "";

Agora vamos criar o nosso arquivo .htaccess

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

#Remove o acesso a pasta system
RewriteCond %{REQUEST_URI} ^system.*

#Redireciona /index.php/nomedocontroller/ to /nomedocontroller/função/
RewriteRule ^(.*)$ index.php/$1 [L]

#se o arquivo não existir (um css ou javascript por exemplo)
#ele redireciona para o index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

#aqui fazemos o redirecionamento 301 de uma url.com.br para www.url.com.br
RewriteCond %{HTTP_HOST} ^(seusite\.com\.br)(:80)? [NC]
RewriteRule ^(.*) http://www.seusite.com.br/$1 [R=301,L]
</IfModule>
<IfModule !mod_rewrite.c>
#caso o mod_rewrite não esteja habilitado ele redireciona todo erro 404
#para o index.php ainda funcionando
ErrorDocument 404 /index.php
</IfModule>

Pronto!
Agora você terá sua URL mais amigável e alem de tudo otimizada para os buscadores!

Para veríficar um exemplo:
acesse meu site assim: http://williamrufino.com.br e você será redirecionado para http://williamrufino.com.br
Fonte: http://codeigniter.com/
www.mestreseo.com.br

Como escrever um model melhor no CodeIgniter

Este post é uma tradução.
Link para o artigo original: http://shawnmccool.com/2009/08/28/how-to-write-a-better-model-in-code-igniter/

Desenvolver utilizando um framework MVC pode ajudar e muito para aumentar a reutilização e robustez do seu código. Neste artigo eu me concentro em métodos de escrita de models para o CodeIgniter Os conceitos em si não são específicos para o Code Igniter, mas parte do código será.

Métodos CRUD

CRUD é a sigla para Create, Retrieve, Update, and Delete. Ou seja criar, pegar, atualizar e apagar. Estes são os tipos mais básicos de interação que sua aplicação terá com o banco de dados.

Iniciando com o CodeIgniter

Para iniciar o blog, vou comentar a instalação do CodeIgniter framework PHP que venho utilizando para os projetos mais recentes.

Primeiro você deve fazer o download da versão mais recente do framework em: http://codeigniter.com/download.php Após o download descompacte, e coloque o conteúdo na pasta do seu aplicativo.