Como gerenciar várias aplicações no CodeIgniter

Sabe quando você desenvolve algumas funções tão bem feitas a ponto de querer imprimir o código e colocá-lo na parede da sala?

Pois é, isso é muito comum. E também é muito comum você desenvolver uma nova aplicação do zero e precisar usar estas funções perfeitas que você criou, mas aí você lembra que elas estão em outro sistema que você não tem acesso mais ao código fonte.

Solução? Fazer tudo de novo.

Mas, se você usa o CodeIgniter, saiba que você pode criar suas funções mágicas e salvar dentro de um helper ou library.

A grande vantagem disto é que você pode configurar o CodeIgniter para utilizar somente uma pasta de sistema e ter várias aplicações usando a mesma estrutura, sem ter que instalar um novo CodeIgniter para cada aplicação.

É isso que vamos ver no post de hoje.

Como gerenciar várias aplicações no CodeIgniter que compartilham as mesmas funcionalidades.

O que você deve ter em mente é que tudo o que sua aplicação irá usar está dentro da pasta application. Ali dentro que estão seus helpers, controllers, views, models, etc.

Vamos imaginar que você tenha duas aplicações: uma chamada clientes e outra chamada cobranças.

Para que você tenha estas duas aplicações compartilhando os mesmos recurso de uma única instalação do CodeIgniter, basta você criar um diretório para cada sistema dentro da pasta application e ali dentro você copia as pastas padrão da pasta application. Veja o exemplo abaixo:

applications/clientes/
applications/clientes/config/
applications/clientes/controllers/
applications/clientes/errors/
applications/clientes/libraries/
applications/clientes/models/
applications/clientes/views/
applications/cobrancas/
applications/cobrancas/config/
applications/cobrancas/controllers/
applications/cobrancas/errors/
applications/cobrancas/libraries/
applications/cobrancas/models/
applications/cobrancas/views/

Este é um exemplo para apenas duas aplicações, mas você pode ter quantas quiser.

O próximo passo é dizer ao CodeIgniter qual aplicação será carregada quando você acessá-lo.

Aqui você pode fazer isto de duas maneiras. Se você quiser usar o index.php padrão do CodeIgniter, deverá editá-lo e colocar na variável $application_folder qual será a aplicação padrão que deverá ser carregada.

Exemplo: se quiséssemos carregar a aplicação cobranças bastaríamos configurar esta variável como está abaixo:

$application_folder = "applications/cobrancas";

O outro modo é caso você queria ter um index.php exclusivo para cada aplicação sua. Porém, neste caso você teria que criar um index.php exclusivo para cada aplicação sua. Você pode dar o nome que quiser para este index.php e dentro dele você informa qual será a aplicação padrão que será carregada.

Exemplo: você poderia criar um arquivo com o nome index_clientes.php, copiando o conteúdo do index.php original e aqui dentro configurar a pasta $application_folder = ‘applications/clientes”,  e mesma coisa para o projeto cobranças, index_cobrancas.php e ali dentro também configurar a variável $application_folder.

Então para chamar cada uma das aplicações pelo seu endereço, basta digitar assim na URL:

www.endereco.com/index_clientes.php irá chamar a aplicação Clientes e www.endereco.com/index_cobrancas.php irá chamar a aplicação Cobranças.

As duas aplicações irão compartilhar as mesmas funcionalidades que estão na pasta CodeIgniter.

Mas se você quiser usar o index.php original do CodeIgniter, além de copiar o conteúdo da pasta application para cada aplicação sua, também deverá deixar a instalação padrão do CodeIgniter, pois é para onde o index.php original direciona o usuário quando ele acessa pelo index.php original.

Por hoje é isto.

Agora e quero que você faça uma coisa. Deixe seu comentário abaixo postando sua dúvida ou sugestão de post. Ficarei muito grato.

Abraços

Fábio

Fábio S. Reszko

Sou Programador PHP desde 2006 e eu acredito sinceramente que programar usando um Framework PHP é a solução para os problemas de códigos desorganizados, difíceis de entender e de dar manutenção no futuro. Se você também acredita nisto, então fique à vontade em explorar meu blog.