anúncios

terça-feira, 1 de março de 2016

Configurando o ambiente de desenvolvimento PHP com framework PhalconPHP

O que é PhalconPHP ?

PhalconPHP é um framework full-stack escrito em C ANSI e compilado na forma de uma extensão do PHP. Isso quer dizer que todos os sources do framework foram convertidos em código nativo de cada sistema operacional. Perfomance.

Segue a estrutura Model-View-Controller (MVC). Na perfomance é 8x mais rápido comparado com o CodeIgniter.

Depois de conhecer o PhalconPHP e para que serve, podemos seguir os procedimentos de configuração no ambiente de desenvolvimento PHP com PhalconPHP na distribuição Linux Debian e/ou CentOS/RHEL/Fedora.

Procedimentos de configuração do PhalconPHP
Debian: #apt-get install git-core gcc autoconf make apache2 php5 php5-dev php5-mysql mysql-server libpcre3-dev
CentOS/RHEL/Fedora: Antes deve ser instalados os pré-requisitos descritos em: Instalando e configurando ambiente de desenvolvimento web no CentOS
#yum install php-devel pcre-devel gcc make

Download do cphalcon e phalcon-devtools via Git
cphalcon é a extensão PhalconPHP que será compilada e adicionada o phalcon.so no Apache
phalcon-devtools é uma ferramenta que permite executar comandos para criar projetos, controlles e modelos de forma rápida. Opcional: #mkdir /opt/phalcon
#cd /opt/phalcon
git clone https://github.com/phalcon/cphalcon.git
git clone https://github.com/phalcon/phalcon-devtools.git

Após a finalização da clonagem do repositório cphalcon e phalcon-devtools Execute:
#cd cphalcon/build
#./install

#cd /opt/phalcon/phalcon-devtools
#./phalcon
#ln -s /opt/phalcon/phalcon-devtools/phalcon.php /usr/bin/phalcon
#chmod +x /usr/bin/phalcon

Debian: criar o arquivo 30-phalcon.ini no diretório /etc/php5/apache2/conf.d e adicionar a extensão phalcon.so
#vim /etc/php5/apache2/conf.d/30-phalcon.ini
extension=phalcon.so
CentOS/RHEL/Fedora: criar o arquivo phalcon.ini no diretório /etc/php.d/ e adicionar a extensão phalcon.so
#vim /etc/php.d/phalcon.ini
extension=phalcon.so

ESC +x (salva e sai do editor Vim)

Reinicie o Apache
Debian: #service apache2 restart
CentOS/RHEL/Fedora: #service httpd restart

Checar a instalação do PhalconPHP
#vim /var/www/checkphalcon.php <?php
print_r(get_loaded_extensions()); ?>

No browser acesse http://IP/checkphalcon.php
Deve aparecer algo semelhante, mas o foco nesse caso é phalcon Array ( [0] => Core [1] => date [2] => ereg [3] => libxml [4] => openssl [5] => pcre [6] => zlib [7] => bcmath [8] => bz2 [9] => calendar [10] => ctype [11] => dba [12] => dom [13] => hash [14] => fileinfo [15] => filter [16] => ftp [17] => gettext [18] => SPL [19] => iconv [20] => json [21] => mbstring [22] => session [23] => posix [24] => Reflection [25] => standard [26] => shmop [27] => SimpleXML [28] => soap [29] => sockets [30] => Phar [31] => exif [32] => sysvmsg [33] => sysvsem [34] => sysvshm [35] => tokenizer [36] => wddx [37] => xml [38] => xmlreader [39] => xmlwriter [40] => zip [41] => apache2handler [42] => PDO [43] => mysql [44] => mysqli [45] => pdo_mysql [46] => pdo_pgsql [47] => pdo_sqlite [48] => pgsql [49] => sqlite3 [50] => phalcon [51] => mhash )
Outro é verificar no phpinfo();
#vim /var/www/info.php
<?php
phpinfo();
?>

No browser, acesse http://IP/info.php

Note se o Phalcon foi habilitado.

Com o PhalconPHP habilidado no Apache, podemos começar a desenvolver projetos PHP com framework PhalconPHP.

O PhalconPHP não impõe uma estrutura fixa para desenvolvimento de projetos. Devido o fato do baixo acoplamento, você pode desenvolver projetos PhalconPHP com a estrutura de arquivos que for mais conveniente para você.

Para fins deste howto será adotado a estrutura base

projetoPhalcon
app/
controllers/
models/
views/
public/
css/
js/
img/

#cd /var/www/projetoPhalcon
#mkdir app/ public/
#mkdir app/controllers/ app/models/ app/views/
#mkdir public/css/ public/js/ public/img/

Note que não é necessário o diretório library relacionado ao PhalconPHP. A estrutura está disponível na memória, pronto para usar.

URLs amigáveis

URLs amigáveis são melhores para SEO, além de ser fácil para os usuários lembrarem. PhalconPHP suporta o módulo rewrite fornecido nos servidores web mais populares (Apache, Nginx).

Não é obrigatório usar URLs amigáveis no projeto com PhalconPHP, use se quiser apenas. Se preferir, crie o .htaccess no diretório do projeto.

#vim /var/www/projetoPhalcon/.htaccess

RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]

Dessa forma todas as solicitações do projeto serão redirecionadas para o diretório public/, tornando a raiz do projeto. Esta etapa garante que os diretórios internos do projeto permanecem ocultos da visão pública, eliminando ameaças deste tipo de segurança.

O segundo conjunto de regras irá verificar se o arquivo solicitado existe e, se isso acontecer, ele não tem que ser reescrito pelo módulo do servidor web.

#vim /var/www/projetoPhalcon/public/.htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]

Criar um VirtualHost para o projeto
OBS: O projetoPhalcon é o diretório deste projeto exemplo, em outros projetos defina o nome de acordo com o projeto que está desenvolvendo.

#vim /etc/apache2/sites-available/projetoPhalcon

Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all


Habilitar o VirtualHost do projeto
# a2ensite projetoPhalcon

Reinicie o Apache
Debian: #service apache2 restart CentOS/RHEL/Fedora: #service httpd restart
Autoinicialização do projeto

O arquivo de inicialização serve de base da aplicação, o que lhe dá o controle de todos os apectos do mesmo. Nesse arquivo é implementado a inicialização dos componentes, bem como o comportamento da aplicação.

#cd /var/www/projetoPhalcon/
#vim public/index.php

Source: index.php

Criação do primeiro Controller
#vim app/controllers/IndexController.php
Source: IndexController.php
ESC +x (salva e sai do editor Vim)
Após testar o controller no browser http://IP/projetoPhalcon, faça o teste no app/views.
Esse foi um exemplo de controller, mas no modelo MVC, a parte visual é implementada no view, nesse caso será mostrado a mesma mensagem no app/views/index.phtml
No app/controllers/IndexController.php deixe a function indexAction() vazia.
#vim app/views/index/index.phtml
Source: index.phtml
No browser, acesse http://IP/projetoPhalcon/

Referência
[1] https://docs.phalconphp.com/en/latest/index.html
Feito!