Iniciação ao PHP: Instalação, IDE e Framework

Este tutorial é para todos aqueles que querem começar a desenvolver aplicação em PHP. Vamos falar sobre as ferramentas necessárias para correr, desenvolver e fazer o debug a uma aplicação em PHP.

O foco deste tutorial não é a programação, mas no fim daremos algumas dicas aos iniciantes de PHP. Não esperem que expliquemos algoritmia ou o que é um ciclo. É necessários que já estejam familiarizados com o desenvolvimento de software.

Para alguém habituado a outro ambiente de desenvolvimento, como .NET ou Java, estão acustomados a ter uma solução unificada que inclui a base da linguagem, um IDE e a uma framework de desenvolvimento (e.g. alguém que desenvolve em .NET normalmente usa o Visual Studio que inclui tudo isto).

Este tipo de solução não existe em PHP, porque há tantas escolhas que podem ser feitas e isso pode afastar alguns utilizadores (especialmente para alguém que tenha outros antecedentes) e é por isso que este tipo de tutorial é necessário.

Primeiro, começamos por falar das ferramentas necessárias para correr aplicações PHP. Depois apresentaremos um IDE para desenvolvimento em PHP e finalmente falaremos de algumas possibilidades para a framework assim como a nossa recomendação (este é um assunto mais sensível). Todas estas ferramentas são gratuitas e multi-plataforma, como esperado.

No final, é fornecido um curso rápido em PHP de forma a introduzir algumas das suas características mais distintas.

O acrónimo AMP: Apache, MySQL e PHP

É isto que precisam para executar aplicações em PHP. As páginas são servidas através do Apache HTTP Server, interpretadas pelo PHP, com o MySQL a ser usado para a base de dados.

Já sei o que estão a pensar: tantas coisas para instalar e configurar - que dor de cabeça! Como isto é uma combinação muito usual, existem muitos pacotes que incluem todo este software e são fáceis de instalar. São normalmente chamados WAMP (Windows, Apache, MySQL e PHP/Perl/Python) ou LAMP (Linux, Apache, MySQL e PHP/Perl/Python).

Existe uma excepção: XAMPP! O X significa que qualquer um destes sistemas operativos pode ser usado: Windows, Linux, Sun Solaris or Mac OS X. Os dois Ps são de PHP e Perl.

Recomendo que instalem o XAMPP, pois nunca tive razões de queixa. A instalação é fácil, a administração é user-friendly (maioritariamente feita através do browser) e até existe uma versão portátil do XAMPP. Não se esqueçam de seguir as recomendações de segurança depois de o instalarem - estão no manual de cada sistema operativo no site oficial.

Além destes módulos, o XAMPP também traz outros módulos importantes como, por exemplo, o phpMyAdmin, que possibilita a administração do MySQL através do browser.

Alternativamente podem usar outro pacote AMP ou até testar directamente num servidor remoto de produção, no entanto se quiserem testar as vossas aplicações localmente então é óbvio que necessitam do AMP instalado (e, claro, isto também fornece uma experiência muito melhor de desenvolvimento e é recomendado).

De seguida fica uma imagem do painel de controlo do XAMPP a correr no Windows Vista, fornecendo informação do estado de cada um dos módulos.

O melhor IDE grátis para PHP

No que diz respeito ao IDE (Integrated Development Environment) existem muitas escolhas possíveis. Algumas pessoas programam exclusivamente com um editor de texto com syntax highlighting, mas isso não é o mesmo que um IDE (no entanto, por vezes também uso esses editores, principalmente quando preciso de fazer pequenas alterações). Um IDE é muito mais do que isso - inclui ferramentas que o ajudam a ser mais produtivo: ferramentas de debug, auto-completação de código, gestão de projectos, etc.

Existem muitos IDEs diferentes e a escolha era difícil no passado. Normalmente, os IDEs encontravam-se divididos em duas categorias: os que eram gratuitos, mas no entanto tinham algo em falta, e aqueles que eram pagos, com funcionalidades mais avançadas, mas quem é que quer gastar dinheiro? ;)

Agora a escolha é fácil, porque chegou o Eclipse PDT. É um projecto Eclipse desenvolvido para o desenvolvimento de PHP. É gratuito e inclui muitas funcionalidades avançadas que não se encontravam noutros IDEs gratuitos da altura, como debug e auto-completação de código (não apenas para funções standard - muito importante, não vão querer perder isto!). Penso que este poderá tornar-se no IDE standard para PHP no futuro se continuar a ser bem desenvolvido.

Devem ler este artigo em como configurar o Eclipse PDT: Getting Started with Eclipse PHP Development Tools (PDT). Irá guiá-los em como instalar o IDE e adicionar algumas funcionalidades extra como o Zend Debugger, o JSEclipse para suporte avançado de JavaScript e o Subclipse para gestão de versões com o Subversion.

Eu uso o Eclipse PDT, mas existem outros IDEs que também podem ser do vosso interesse:

  • Gratuitos
  • Comerciais
    • Zend Studio: talvez o melhor IDE para PHP que existe; a versão mais barata é a Standard (cerca de 63€ aquando da escrita).
    • phpDesigner: bom editor com boas funcionalidades; a versão mais barata é a Academic License (cerca de 29€ aquando da escrita).
    • Rapid PHP: editor barato com boas funcionalidades (cerca de 19€ aquando da escrita para uso não-comercial).

Escolher a melhor framework PHP

É aqui que as coisas se tornam feias. Se fizerem alguma pesquisa vão descobrir muita discussão em torno das frameworks para PHP. Isto é porque existem muitas, cada uma tem um propósito diferente e cada uma tem a sua dose de utilizadores fervorosos.

Vamos começar por definir o que é uma framework. Uma framework é um conjunto de bibliotecas e classes que formam a base de uma aplicação. Fornecem os elementos comuns a qualquer aplicação (e.g. funcionalidade para interagir com a base de dados). Desta forma, podem perder mais tempo a desenvolver a aplicação em si e isto ajuda-vos a serem mais produtivos.

Então porquê tanta confusão? Há alguns anos atrás, eram poucas as frameworks em PHP e geralmente mantiam-se desconhecidas para a maior parte dos programadores. Estes normalmente desenvolviam o seu próprio código e ainda existem muitos que trabalham desta forma. No entanto, com o aumento da complexidade das aplicações web e com a crescente necessidade de desenvolver aplicações mais depressa e melhor, muitas das frameworks em PHP começaram a destacar-se. A comunidade PHP encontra-se dividida entre muitas frameworks diferentes e até existem aqueles que usam várias simultaneamente. Por isso, escolher a melhor framework é algo, não só difícil, mas controverso.

A conclusão é: não há melhor framework em PHP. Têm de escolher a que melhor serve as vossas necessidades e aquela com que gostam mais de trabalhar. Dito isto, vou dar a minha sugestão sobre que framework poderiam escolher e descreverei algumas frameworks diferentes e as suas diferenças e similaridades.

Zend Framework - Melhor escolha

Zend Framework
Zend Framework

Porque é que recomendo a Zend Framework? Para começar, é feita pelas mesmas pessoas que criaram o PHP e que oferecem um conjunto alargado de soluções para desenvolvimento de PHP, por isso sabem aquilo que estão a fazer.

Uma das suas principais vantagens é que tem o suporte de muitos nomes grandes da indústria e a Zend fez um bom trabalho de marketing com a sua framework. Mesmo assim, a Zend Framework recebeu muitas críticas quando foi lançada e com as suas versões iniciais, mas muitas dessas questões já foram resolvidas.

Segundo, tem tudo a seu favor:

  • Boa documentação e bons tutoriais
  • Instalação fácil
  • Excelente suporte de web services
  • Boas funcionalidades de localização
  • Liberdade para escolher a arquitectura da aplicação

O último ponto é particularmente importante, porque existem muitas frameworks que obrigam as aplicações a seguirem a sua arquitectura rigorosamente (nomeadamente o padrão Model-view-controller), o que também pode ser uma coisa boa, mas por vezes é necessária maior flexibilidade. A Zend Framework é flexível o suficiente para que sejamos NÓS a escolher como queremos estruturar as nossas aplicações. É bastante adaptável para projectos muito pequenos e também para projectos muito grandes. Isto também significa que devem ter o conhecimento necessário para saberem como estruturar as vossas aplicações, o que pode ser mau para os menos experientes que podem sentir-se um pouco perdidos.

A Zend Framework tem também um excelente suporte e conta com centenas de contribuidores, o que garante a sua continuação. É uma framework que facilmente se integra com outras e podem facilmente usar apenas uma ou outra parte dela que seja do vosso interesse. O seu suporte para AJAX está longe do ideal (podem, no entanto, facilmente integrar uma biblioteca AJAX da vossa escolha), mas uma das principais funcionalidades da próxima versão será o suporte avançado de AJAX.

Uma das suas melhores funcionalidades é o seu excelente suporte para web services e também a sua integração com muitos web services populares. É continuamente actualizada e isso também é muito importante.

Apesar de ser esta a framework que eu uso, isso não quer dizer que seja a melhor - existem outras frameworks muito boas. Vou descrever algumas dessas frameworks.

CodeIgniter - Simplicidade é rainha

CodeIgniter
CodeIgniter

CodeIgniter é uma framework lightweight de PHP, onde simplicidade é a sua palavra de ordem. É muito boa para iniciantes, porque é possível começar a produzir sites simples muito rapidamente. É mais própria para o desenvolvimento de sites pequenos e médios, mas destaca-se neste domínio por causa da sua simplicidade.

É também fácil de instalar, tem boa documentação, mas obriga-nos a usar a sua arquitectura MVC, o que pode ser bom porque já vos dá uma estrutura base para a vossa aplicação, mas é menos flexível que a Zend Framework neste aspecto.

CakePHP e o seu doce sabor

CakePHP
CakePHP

CakePHP é uma framework de PHP muito popular. Tem muitos pontos a seu favor. Certamente tem muitas funcionalidades, provavelmente tudo o que alguma vez irá precisar.

É também fácil de instalar e a documentação é boa, embora pudesse estar melhor organizada. É outra framework MVC que requer que o programador siga este padrão.

Uma das suas características é a sua habilidade de fornecer simplicidade, mas a troco de conhecimento (é difícil perceber como as coisas estão a funcionar).

PRADO - O poder dos eventos

PRADO
PRADO

PRADO é por vezes chamada de ".NET para PHP". É uma framework baseada em componentes e gerida por eventos, muito parecida com a forma como o .NET funciona. É muito agradável de trabalhar com este paradigma de eventos. Tem a sua própria linguagem para templates, também inspirada no .NET.

É uma framework muito diferente e única e faz com que qualquer programador de .NET se sinta em casa.

symfony - Orquestra complexa

symfony
symfony

symfony é uma framework de PHP muito grande e com muitas funcionalidades. É também complexa, sendo esse um dos seus grandes defeitos, pois torna-a difícil de aprender. Devido à sua complexidade e tamanho é também mais lenta que outras frameworks de destaque.

Isso não vos deverá assustar, porque é também muito boa e com uma comunidade muito grande a suportá-la. Também segue o padrão MVC e tem boa documentação. Dispõe de geradores de código e consegue suportar projectos muito grandes.

Outro bom ponto a seu favor é que existem muitas empresas que a usam e tem sites dedicados para empregos relacionados com o symfony, o que vos pode ajudar a encontrar trabalho.

Um dos aspectos menos atractivos desta framework é a sua necessidade do uso da linha de comandos por várias vezes ao longo do desenvolvimento de um projecto.

Curso rápido de PHP - O que precisam de saber

Este será um curso rápido em PHP. Se estão habituados a uma linguagem derivada do C (C++, Java, C#, JavaScript, Perl, etc.) então vão sentir-se em casa com o PHP (também derivado do C).

Algumas dicas rápidas:

  • As instruções acabam-se com ;
  • O código PHP tem de ser delimitado por marcadores, os mais comuns <?php para o início e ?> para o fim
  • Comentários são colocados entre /* */ ou precedidos por //
  • As variáveis têm o prefixo $ (sinal do dólar), e.g. $variable = 3;
  • As variáveis são case-sensitive, mas as funções e classes não
  • Strings podem ser definidas com " (aspas) ou ' (plicas)
  • Usa-se a função echo para imprimir algo, e.g. echo $variable;
  • A concatenação de strings é feita com o . (ponto), e.g. echo "This is a " . "test.";
  • A maioria das funções de C têm um equivalente directo, e.g. echo sqrt(2);

O PHP é uma linguagem de programação orientada a objectos (apesar de não ter sido assim nas primeiras versões). Algumas dicas relacionadas com objectos:

  • Membros são chamados com o operador ->, e.g. $obj->a = 3;
  • Usem $this na definição de uma classe quando querem aceder ao seu contexto, e.g. $this->a = 3;
  • Métodos estáticos são chamados com o operador ::, e.g. ClassName::staticMethod();
  • Os construtores são definidos com __construct()

Um simples Olá Mundo escrito em PHP:

<?php
 
    echo "Olá Mundo";
 
?>

As variáveis em PHP não têm um tipo associado. Isto é código válido:

<?php
 
    // notem que não há declaração da variável
    $var = "anything";
    $var = 3; // código válido
 
?>

Isto também permite que se possam comparar números em strings com inteiros, por exemplo:

<?php
 
    $varOne = "1"; // uma string com 1
    $varTwo = 1;
 
    if ($varOne == $varTwo) { // isto é verdadeiro
       echo "Ambas são iguais";
    }
 
?>

Se quiserem testar se o valor é igual e se é do mesmo tipo usem o operador ===. Usando o exemplo anterior:

<?php
 
    $varOne = "1"; // uma string com 1
    $varTwo = 1;
 
    if ($varOne === $varTwo) { // isto é falso! Notem o operador ===
       echo "Ambas são iguais";
    }
 
?>

Os vectores em PHP são muito especiais, não precisando de serem inicializados. Exemplo de uso de vectores:

<?php
 
    /* é tudo código válido */
 
    $arr[0] = 1;
    $arr[97] = "algo";
    $arr["teste"] = 123;
    $arr = array(1, 2, 3);
    $arr[] = 4; // array's values: [0] = 1, [1] = 2, [2] = 3, [3] = 4
 
    $arr = array("nome" => "João", "idade" => 20, "local" => "Porto");
 
    echo $arr["nome"]; // escreve "João"
 
?>

O PHP também suporta a sintaxe foreach. Vejam os exemplos seguintes:

<?php
 
    $arr = array("nome" => "João", "idade" => 20, "local" => "Porto");
 
    foreach ($arr as $val) {
       echo "$val<br />";
    }
    // Escreve:
    //   João
    //   20
    //   Porto
 
    // se também quiserem a chave
    foreach ($arr as $key => $val) {
       echo "$key = $val<br />";
    }
    // Escreve:
    //   nome = João
    //   idade = 20
    //   local = Porto
 
?>

Se quiserem aceder aos valores GET e POST, podem usar os vectores públicos $_GET e $_POST. No vosso ficheiro HTML:

<form method="GET" action="pagina.php">
    <input type="text" name="nome" />
    <input type="submit" />
</form>

No vosso ficheiro PHP (pagina.php):

<?php
 
    if (isset($_GET["nome"])) {
       echo "O seu nome é " . $_GET["nome"] . ".";
    } else {
       echo "Não introduziu o seu nome!";
    }
 
?>

Em PHP não são necessárias delegates ou apontadores para funções. O equivalente em PHP é:

<?php
 
    function teste() {
       echo "testar!";
    }
    $funcao = "teste"; // definimos o nome da função a chamar
    $funcao(); // chamamos a função (neste caso escreve "testar!")
 
?>

Também podemos fazer isto com métodos de classes:

<?php
 
    class teste {
       function a() {
          echo "testar!";
       }
    }
    $metodo = "a"; // define o método que vamos chamar
    $obj = new teste(); // cria um novo objecto da classe "teste"
    $obj->$metodo(); // chama o método "a"
 
?>

Conclusão

Agora estão prontos para desenvolver aplicações em PHP! O PHP é uma linguagem muito flexível e user-friendly. PHP.net é o sítio ideal para irem quando precisarem de ajuda. Boa documentação com muito conteúdo criado por utilizadores.

O meu último concelho: escrevam boa documentação para o vosso código.

Espero que tenham gostado deste artigo.

Recursos Gerais

XAMPP - Apache, MySQL, PHP e Perl

Eclipse PDT - PHP IDE

Frameworks de PHP

Análises e comparações de frameworks de PHP

Nuno Freitas
Publicado por Nuno Freitas em 19 março, 2008

Artigos relacionados