De uns tempos pra cá, tenho utilizado bastante o Kohana PHP para suprir minhas necessidades Web + PHP.
Conheci o Kohana após desenvolver por um bom tempo em cima do framework, bem conhecido, Code Igniter, no qual o Kohana foi baseado.
Dizendo “por cima” (não é o foco do artigo), resolvi trocar o Code Igniter pelo Kohana, basicamente devido ao uso estrito da orientação a objetos disponibilizada no PHP 5, e também ao fato de que o Kohana é mantido pela sua própria comunidade, o contrário do Code Igniter, que todos sempre tiveram que esperar a boa vontade do pessoal da Ellislab para o lançamento de novas versões, features, etc… Enfim, isso é assunto para outra discussão, em breve.
O que quero explicar aqui, é uma coisa bem básica de se fazer no Kohana, a criação de Múltiplas Aplicações, apenas com uma instância do Kohana.
Infelizmente não tive a oportunidade de fazer o mesmo no Code Igniter, por falta de necessidade mesmo. Então *não* vou falar aqui, qual framework é mais fácil de se fazer isso, se difere (já que o Kohana é baseado no Code Igniter), etc… Se alguém souber como funciona no CI (acredito que da mesma forma do Kohana), pronuncie-se! :-)
Lembrando que isso esse é só um exemplo de como você pode utilizar o conceito de múltiplas aplicações no Kohana.
Baseando-se em uma instalação limpa do Kohana, após a extração dos arquivos, você terá uma estrutura assim:
application/
system/
index.php
Neste exemplo, vou criar duas aplicações: app_index e app_admin. Onde app_index será a aplicação principal (site) e a app_admin será a aplicação responsável pela administração do site.
Portanto, você deve fazer uma cópia do diretório application, no mesmo local, e renomear as duas pastas para: app_index e app_admin. Tendo assim a estrutura abaixo:
app_admin/
app_index/
index.php
O próximo passo é a criação do .htaccess que vai nos auxiliar nessa “arte”. Personalize o código abaixo conforme a sua necessidade.
Este .htaccess, tem a função de direcionar as URL’s para o arquivo especifico de cada uma. Ou seja:
http://127.0.0.1/dir_instalacao_kohana/admin -> admin.php
http://127.0.0.1/dir_instalacao_kohana/(qualquer outra coisa que nao seja admin/) -> index.php
Grande parte do .htaccess abaixo, foi retirado da própria documentação do Kohana.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | # Turn on URL rewriting RewriteEngine On # Put your installation directory here: # If your URL is www.example.com/, use / # If your URL is www.example.com/kohana/, use /kohana/ RewriteBase /dir_instalacao_kohana/ # Do not enable rewriting for files or directories that exist RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} /dir_instalacao_kohana/admin(/|$) RewriteRule ^admin/(.*)$ admin.php/$1 [PT,L] RewriteRule ^(.*)$ index.php/$1 [PT,L] |
Podemos perceber que a regra (RewriteRule) ^admin/(.*)$ aponta para o arquivo admin.php, o qual eu vou explicar de onde vem agora.
O arquivo admin.php, nada mais é que a cópia do arquivo index.php, porém ele precisa ser configurado para apontar para o diretório app_admin, assim como o index.php precisa ser configurado para apontar para o diretório app_index também, como abaixo.
index.php
1 | $kohana_application = 'app_index'; |
admin.php
1 | $kohana_application = 'app_admin'; |
Após isso, vem a parte da configuração especifica de cada aplicação. Uma dessas configurações, que com certeza você vai precisar é o routes.php, que fica por padrão localizado no system/config/routes.php.
Se você não tiver o arquivo routes.php, dentro da pasta config da sua aplicação, ele vai pegar o arquivo padrão que é o próprio system/config/routes.php. Portanto faça uma cópia do routes.php para cada uma de suas aplicações, no nosso caso, para app_index/config/routes.php e app_admin/config/routes.php.
De aqui pra frente é só com você, a estrutura esta montada, e espero que a explicação esteja simples e fácil de compreender.
Não deixe de comentar sua própria experiência.
2008-06-22 at 11.54 pm
Engraçado…. antes deu mesmo conhecer Kohana criei um framework em PHP tb que funciona com múltiplas aplicações e apenas com uma instância tb.
Se alguem tiver curiosidade acessem http://xpt.alexsandro.com.br
Qualquer dúvida, me envia e-mail pelo site.
2008-06-23 at 10.24 am
Pô, legal :)
O framework não esta disponível para download Alexsandro?
[]s
2008-06-25 at 1.11 pm
Opa.. ainda não.. pois estou lampidando-a, a principio apenas amigos estão testando-a.
Você gostaria de ser um colaborador/tester tambem?