Jun 21

Kohana PHP: Criando múltiplas aplicações


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.

3 Responses

  1. Alexsandro Says:

    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.

  2. Caio Ariede Says:

    Pô, legal :)

    O framework não esta disponível para download Alexsandro?

    []s

  3. Alexsandro Says:

    Opa.. ainda não.. pois estou lampidando-a, a principio apenas amigos estão testando-a.

    Você gostaria de ser um colaborador/tester tambem?

Leave a Comment

Please note: Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.