segunda-feira, 20 de fevereiro de 2012

Criando uma aplicação com o Symfony – Pt. 2

Olá a todos, vamos dar continuidade a nossa série de tutoriais sobre o Framework Symfony.
Na promeira parte do tutorial, mostramos como baixar e instalar o Symfony, conferir a sua versão e agora, iniciaremos o nosso projeto.

Como puderam ver, eu não falei nada sobre que sistema criar e, o que ele vai fazer até o momento, bom... Isso ocorre pois o primeiro momento são apenas configurações genéricas que serão utilizadas por qualquer aplicação independente do seu contexto, ainda não entraremos no mérito da aplicação, continuaremos com as configurações iniciais.

O que criaremos???

Para fins de estudo, criaremos uma simples aplicação de automação comercial, onde será acessada pelo vendedor, gerente e administrador do sistema. Essa aplicação permitirá apenas o cadastramento de produtos, clientes e um caixa para registrar a venda, será possível também, visualizar os produtos que são vendidos ao cliente, exemplo: Cliente A comprou os produtos X, Y e Z; esses produtos constaram para visualização no sistema, somente.

Vamos nessa!!!

Com o comando para testarmos se o Symfony não possui erros, conforme tutorial anterior, na pasta raiz do projeto podemos executar os seguintes comandos:

# cd /var/www/projeto1
# php lib/vendor/symfony/data/bin/symfony generate:project projeto1

Executando o comando acima estamos criando toda a estrutura de diretórios do nosso projeto. Com isso podemos criar dentro do nosso projeto a nossa aplicação, conforme comando abaixo:

# php symfony generate:app vendedor

Notem que a aplicação será criada dentro do diretório do “projeto1” e essa aplicação em si levará o nome de “vendedor”, pois será uma aplicação que será acessado pelo vendedor. Outro fator importante é que podemos criar mais de uma aplicação, como faremos, conforme comando abaixo:

# php symfony generate:app gerente
# php symfony generate:app admin

Estamos criando agora as aplicações que serão acessadas pelo gerente e pelo administrador do sistema.

Pois bem, caso não tenhamos nenhum erro, aparecerá uma lista de diretórios e arquivos criados, conforme abaixo, respectivamente para cada aplicação, neste caso copiei somente os arquivos correspondente a aplicação admin.

>> dir+ /var/www/projeto1/apps/admin/config
>> file+ /var/www/projeto1/apps/admin/config/routing.yml
>> file+ /var/www/projeto1/apps/admin/config/settings.yml
>> file+ /var/www/projeto1/apps/admin/con...plicationConfiguration.class.php
>> file+ /var/www/projeto1/apps/admin/config/security.yml
>> file+ /var/www/projeto1/apps/admin/config/view.yml
>> file+ /var/www/projeto1/apps/admin/config/filters.yml
>> file+ /var/www/projeto1/apps/admin/config/cache.yml
>> file+ /var/www/projeto1/apps/admin/config/factories.yml
>> file+ /var/www/projeto1/apps/admin/config/app.yml
>> dir+ /var/www/projeto1/apps/admin/i18n
>> dir+ /var/www/projeto1/apps/admin/lib
>> file+ /var/www/projeto1/apps/admin/lib/myUser.class.php
>> dir+ /var/www/projeto1/apps/admin/modules
>> dir+ /var/www/projeto1/apps/admin/templates
>> file+ /var/www/projeto1/apps/admin/templates/layout.php
>> tokens /var/www/projeto1/apps/admin/config/settings.yml
>> file+ /var/www/projeto1/web/admin.php
>> file+ /var/www/projeto1/web/admin_dev.php
>> tokens /var/www/projeto1/web/admin.php
>> tokens /var/www/projeto1/web/admin_dev.php
>> rename /var/www/projeto1/apps/admin/con...fig/adminConfiguration.class.php
>> tokens /var/www/projeto1/apps/admin/config/adminConfiguration.class.php
>> chmod 777 /var/www/projeto1/web/uploads
>> chmod 777 /var/www/projeto1/cache
>> chmod 777 /var/www/projeto1/log
>> chmod 777 /var/www/projeto1/symfony
>> chmod 777 /var/www/projeto1/web/uploads/assets
>> dir+ /var/www/projeto1/test/functional/admin

O Symfony foi desenvolvido para trabalhar com URL Amigável (caso seja do interesse do desenvolvedor), desta forma, podemos configurar o nosso Apache para receber tais parâmetros. Segue abaixo um pequeno tutorial sobre o Apache para que nosso trabalho seja bem elaborado:

Primeiramente, precisamos verificar se o módulo Rewrite está habilitado, através do comando abaixo podemos habilitá-lo ou confirmar se o mesmo encontra-se ativo.

# a2enmod rewrite
Se não aparecer nada, significa que o módulo foi habilitado, caso apareça uma mensagem conforme veremos abaixo, significa que o módulo já encontra-se habilitado, caso apareça algo de diferente, postem nos comentários para que eu entenda o erro e ajudar:

### Módulo do Apache já habilitado.
# Module rewrite already enabled

Agora vem o processo de configurarmos o host, ou seja, o endereço local a ser acessado via navegador. Segue o script abaixo que deve ser incluido dentro do arquivo httpd.conf que fica em /etc/apache2/




Incluido e salvo estas informações dentro do arquivo httpd.conf, precisamos incluir o caminho no arquivo de hosts, realizamos esse processo com o seguinte comando:



# echo "127.0.0.1   projeto1.local">>/etc/hosts



Feito isso, basta resetar o servidor Apache:

# /etc/init.d/apache 2 reload

Com tal comando nosso Apache resetará e já será possível acessar o nosso projeto via navegador com o seguinte endereço:

# http://projeto1.local

Com isso, nosso projeto foi criado e já poderá ser acessado através do navegador. Claro, ainda não trabalhamos com o Banco de Dados e isso ficará para o próximo tutorial. Onde trabalharemos exclusivamente com o Banco de Dados do nosso sistema.

Até a próxima!!!

sábado, 18 de fevereiro de 2012

Criando uma aplicação com o Symfony

Olá a todos.

Após um bom tempo onde disse que iria fazer postagens a vocês e no final não fiz nada, decidi começar com uma publicação pesada e de extrema importância para o desenvolvimento de aplicações profissionais em PHP, criarei um tutorial completo de como criar aplicações usando o Framework Symfony.

Assim como o Zend, Codeigniter, CakePHP, etc... etc... etc... O Framework Symfony nos permite criar aplicações Web de forma rápida e organizada, trabalhando em cima do CRUD e com forte embasamento na reutilização do código.

Trabalharemos com scripts diretamente no terminal, sendo essa mais uma característica importante que um Framework deve ter e, é óbvio, o Symfony possui.

Para maiores informações sobre todo o processo de criação de uma aplicação usando o Symfony, recomendo a leitura do Manual disponibiliado no próprio site do projeto, lá será possível também, baixar os livros em formato PDF:


Após essa breve apresentação, vamos ao que interessa.
Para esse tutorial, estou utilizando:

  • Ubuntu 10.04 : Trata-se de uma versão estável do Ubuntu e com grande quantidade de resolução de erros no qual a comunidade trabalhou desde o seu lançamento, em Abril de 2010, podemos enfatizar também que, apesar de ser uma versão considerada “antiga”, a própria Canonical possui o link ativo e disponível em sua página de download junto com a versão 11.10, esta a última versão lançada. Claro, até a data em que esse tutorial é criado. Para baixar o Ubuntu, basta seguir o link:http://www.ubuntu.com/download/ubuntu/download
  • Apache2 Versão 2.2-14 : neste caso, como estou utilizando o Ubuntu, a instalação do mesmo foi realizada através do Aptitude. Trabalharei num tutorial especifico quanto a isso.
  • PHP 5.3.2 : Segue a mesma situação do Apache, a instalação foi realizada através de linha de comando – Aptitude.
  • MySQL 5.1.41 : Também instalado via Aptitude.

Toda e qualquer modificação de versão para uma “mais recente” do Ubuntu, Apache2, PHP e/ou MySQL, não trará mudanças muito grandes ao nosso projeto, qualquer dúvida, a parte de comentários estará disponível para que eu possa ajudá-los.

Vamos nessa:

Nesse primeiro tutorial, criaremos os diretóirios do projeto e as configurações iniciais.

Acessem o terminal do Ubuntu e via linha de comando se loguem como root:
$ su -
Senha:


Primeiramente entraremos no diretório do Apache para criarmos os diretórios do projeto:
# cd /var/www

Agora criaremos os diretórios do projeto:
# mkdir -p projeto1/lib/vendor
# chmod 777 -R projeto1
# cd projeto1

Tendo os diretórios prontos, baixaremos agora o Symfony através do seu site:

IMPORTANTE: Estamos utilizando a versão 1.4 do Symfony, já foi disponibilizada a versão 2.0, em breve criaremos um tutorial sobre o mesmo, mas por ora, a versão 1.4 é excelente e continua sendo atualizada pela comunidade.

  • Façam o download do arquivo symfony-1.4.16.tgz (Até a data desse tutorial é a versão mais recente do Symfony 1.4).
Geralmente, os navegadores do GNU/Linux baixam seus arquivos sempre para o diretório “Download” que fica na pasta local do Usuário sendo utilizado, no meu caso fica em:
/home/ewerton/Download

Copiem o arquivo symfony-1.4.16.tgz e colem ele dentro de:
/var/www/projeto1/lib/vendor

Extraia o arquivo dentro desse diretório e, em seguida renomeie o diretório apenas para “symfony” (Sem as aspas).

Caso deseje fazer todo esse processo por linha de comando execute os comandos nessa ordem:
Copie o arquivo da pasta de download para a pasta do nosso projeto
# mv symfony-1.4.16.tgz /var/www/projeto1/lib/vendor

Extraia os arquivos:
# tar -zxvf symfony-1.4.16.tgz

Renomeie o diretório do Symfony
# mv symfony-1.4.16 symfony

Remova o arquivo TGZ do Symfony de dentro do seu projeto.
# rm symfony-1.4.16.tgz

Agora sim, vamos começar com o que interessa, passaremos a utilizar os scripts do próprio Symfony. Primeiramente é necessário saber se o Framework está instalado corretamente, para tal usaremos o comando dentro da pasta raiz do “projeto1”:
# php lib/vendor/symfony/data/bin/symfony -V

Lembrando: Acredito que a maioria já saiba disso, mas é importante lembrar que, diferente do DOS, que podemos digitar nosso comandos sem distinção de maiúsculo para minusculo, o Shell do Pinguim faz essa distinção (Case Sensitive), caso algum comando seja maiusculo irei sublinhá-los para reforçar essa ideia.

Continuando...

Se aparecer a mensagem a seguir, significa que seu Symfony foi extraido e “instalado” com sucesso.
symfony version 1.4.16 (/var/www/blog/lib/vendor/symfony/lib)

Caso apareça a seguinte mensagem, antes da linha acima, não entre em pânico, por ora, sem mais delongas, apenas desconsiderem...
PHP Deprecated: Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/mcrypt.ini on line 1 in Unknown on line 0
symfony version 1.4.16 (/var/www/blog/lib/vendor/symfony/lib)

Dessa forma o Symfony já está em nossa máquina e pronto para receber nossos projetos.
O projeto que veremos no próximo tutorial de forma mais detalhada, assim como a criação do Banco de Dados no padrão YAML, extensamente utilizado no Symfony.

Obrigado a todos e, dúvidas, me enviem um comentário, ajudarei a todos, na medida do possível.