Iniciando com Zend Framework 2: Skeleton e ZfcUser

Zend Framework

Iniciando com Zend Framework 2: Skeleton e ZfcUser

Atenção! Essa postagem foi escrita há mais de 2 anos. Na informática tudo evolui muito rápido e algumas informações podem estar desatualizadas. Embora o conteúdo possa continuar relevante, lembre-se de levar em conta a data de publicação enquanto estiver lendo. Caso tenha sugestões para atualizá-la, não deixe de comentar!

Este é um tutorial feito para ser curto e fácil de seguir para lhe ajudar a começar com o Zend Framework 2.0 e um dos seus módulos mais comuns, o ZfcUser. Ao final deste tutorial você terá uma aplicação básica no ZF2 com registro de usuário e autenticação.

Pré-requisitos

Para este tutorial presumo que você tenha instalado:

  • PHP 5.3.3+ (com pdo-sqlite ou pdo-mysql)
  • Um web server e conhecimentos de como configurar um virtual host
  • Git (ou pelo menos a capacidade de acessar o Github e baixar o zip do projeto, o que vai te obrigar a baixar o framework de outro source e colocar no diretório apropriado)
(De qualquer forma, posso dar uma mão pra galera que estiver com dificuldades em alguma dessas partes. Basta postar nos comentários!)

Se você tiver o PHP 5.4+, tecnicamente nem precisará de um web server pra testar o Zend Framework 2, uma vez que você pode simplesmente utilizar o novo servidor para desenvolvimento embutido no PHP.

Um comentário sobre o composer

Enquanto o composer é uma maneira suportada de configurar o skeleton, eu prefiro simplesmente utilizar o git para esse tutorial. Na minha opinião isso torna as coisas mais simples e fáceis de debugar caso alguém tenha problemas em seguir o tutorial.

Passo 1: Obtendo o Skeleton do Zend Framework

O primeiro passo é clonar o skeleton application:

[user@workstation workspace]$ git clone --recursive https://github.com/zendframework/ZendSkeletonApplication.git

Depois, configure um vhost apontando para o diretório público da sua novo skeleton clonado. Neste ponto você já deve ser capaz de acessar http://seuvhost/ no seu navegador e ver o seguinte:

Se você estiver utilizando o PHP 5.4 e quiser utilizar o servidor embutido, simplesmente abra um novo terminal, cd para o diretório public e execute:

[user@workstation public]$ php -S 8000

Com isso rodando você deverá ser capaz de acessar http://localhost:8000/ e visualizar a aplicação.

Passo 2: Configurando uma conexão com o banco de dados

Para o ZfcUser iremos necessitar de um banco de dados para guardar os usuários. Neste tutorial irei cobrir o MySQL e o SQLite, mas com o ZfcUser e o Zend\Db suportam muitos outros SGBDs.

Crie um novo arquivo ./config/autoload/database.local.php e preencha-o com o seguinte:

Para o MySQL:

<?php
return array(
  'service_manager' => array(
    'factories' => array(
      'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterServiceFactory',
    ),
  ),
  'db' => array(
    'driver' => 'pdo',
    'dsn' => 'mysql:dbname=CHANGEME;host=localhost',
    'username' => 'CHANGEME',
    'password' => 'CHANGEME',
  ),
);

Ou para o SQLite:

<?php
return array(
  'service_manager' => array(
    'factories' => array(
      'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterServiceFactory',
    ),
  ),
  'db' => array(
    'driver' => 'pdo',
    'dsn' => 'sqlite:' . getcwd() . '/data/users.db',
  ),
);

Passo 3: Instalando o ZfcUser

Agora vamos instalar o ZfcUser. Primeiro cd para o diretório vendor e execute os seguintes comandos:

[user@workstation vendor]$ git clone https://github.com/ZF-Commons/ZfcUser.git
[user@workstation vendor]$ git clone https://github.com/ZF-Commons/ZfcBase.git

Nota: ZfcBase é apenas uma dependência do ZfcUser – contém algumas classes básicas que são úteis para diversos módulos.

Agora habilite os módulos editando ./config/application.config.php e adicionando-os à array demodules:

<?php
return array(
  'modules' => array(
    'Application',
    'ZfcBase',
    'ZfcUser',
  ),
  'module_listener_options' => array(
    'config_glob_paths' => array(
      'config/autoload/{,*.}{global,local}.php',
    ),
    'module_paths' => array(
      './module',
      './vendor',
    ),
  ),
);

Agora precisamos importar o schema do banco do ZfcUser. Se estiver usando o SQLite será necessário apenas uma linha de comando que deverá ser executada na raíz do projeto:

[user@workstation skeleton]$ cat vendor/ZfcUser/data/schema.sqlite.sql | sqlite3 data/users.db

(Se alguém souber como se faz isso no Windows, por favor poste nos comentários!)

Se estiver usando MySQL importe o arquivo ./vendor/ZfcUser/data/schema.sql para o seu banco que configuramos antes.

Deve ser o suficiente! Tente acessar http://seuvhost/user e você será recebido com a tela de login:

Agora você já tem uma aplicação básica rodando com o Zend Framework 2 com suporte a registro e autenticação!

Recursos

Aproveite para dar uma conferida em algumas extensões para o módulo ZfcUser que já existem:

  • BjyAuthorize – Adiciona suporte a ACL utilizando Zend\Acl.
  • CdliTwoStageSignup – Adiciona uma etapa de verificação de e-mail ao processo de registro.
  • CdliUserProfile – Um sistema de perfil de usuário.
  • CdliAutogenUsername – Permite a utilização de nomes de usuário gerados automaticamente depois do registro.
  • ScnSocialAuth – Adiciona autenticação através de redes sociais ao ZfcUser para sites como Google, Facebook, Twitter, Yahoo!, etc.
  • EdpGithub – Adicionada autenticação do Github ao ZfcUser.

Se você estiver se perguntando “e agora?”, tire alguns minutos para ler o excelente tutorial de ZF2 do Rob Allen que explica a criar uma aplicação básica do zero e/ou venha conversar conosco no #zftalk.2 @ Freenode se tiver dúvidas.

Um abraço a todos e fiquem com Deus!
Rafael Jaques

Tutorial adaptado do original escrito por EvanDotPro: http://blog.evan.pro/getting-started-with-the-zf2-skeleton-and-zfcuser