CakePHP: apenas um core para diversos aplicativos

Agora que eu me mudei pro DreamHost, estou querendo migrar e fazer diversos sites dentro do espaço que tenho por aqui. A maioria dos sites que faço atualmente são desenvolvidos com o framework CakePHP, então eu configurei um novo domínio, abri a pasta que foi criada e mandei o cake todo pra lá. A minha estrutura de diretórios ficou mais ou menos assim:
/
/eberfdias.com
/app
/webrooot
index.php
/cake
/etc...
Como vocês podem ver, o core do cake esta dentro da pasta onde coloquei meu aplicativo também, na pasta do domínio que registrei por lá. O core do cake tem quase 4Mb e se eu fosse dar upload do core toda vez que eu quisesse criar um novo aplicativo baseado em CakePHP, além de ser um saco, seria uma duplicação de arquivos desnecessária [a não ser que você tenha feito mudanças específicas no core pra suprir as necessidades de um determinado serviço].
Mas por que é desnecessário? Porque você pode colocar o core do cake fora da pasta do seu domínio, tornando-o acessível para qualquer aplicação em qualquer outra pasta. Fazer isso é muito simples [principalmente porque a forma como eu fiz foi extremamente simplista].
O primeiro passo é transferir a pasta “cake” de dentro da basta do domínio para o seu root. A estrutura de diretórios fica assim com esta mudança:
/
/cake
/eberfdias.com
/app
/webroot
index.php
/etc...
Depois disto, basta configurar o arquivo index.php na sua pasta webroot, dentro da pasta app [se é este mesmo o nome que você deu]. A única linha que você modifica é esta:
define('CAKE_CORE_INCLUDE_PATH', ROOT);
trocando por:
define('CAKE_CORE_INCLUDE_PATH', dirname(dirname(dirname(dirname(__FILE__)))));
O comando dirname pega o diretório do arquivo em questão, mesmo se ele for um arquivo incluso, ou seja, ele pega a pasta do arquivo incluido, não do arquivo que o está incluindo. Sendo assim, nós retornamos 4 níveis para encontrarmos a pasta “cake”. Uma fez feito isso, o seu aplicativo deverá funcionar normalmente acessando o core do cake fora da pasta do domínio!
Se você usa windows pra desenvover seus sites [como eu], você também pode mover a pasta cake pra fora da pasta do seu aplicativo com essas configurações. Assim, se você desenvolve varios sites com Cake, você pode manter apenas um core pra todos eles. A atualização do core tmb se torna mais simples desta forma!
O mais legal é que o CakePHP deixa você customizar o local de todos os “pedaços” do seu aplicativo, possibilitando o aumento da segurança de seu código longe do alcance dos usuários. Para saber mais sobre isso é só dar uma olhadinha neste capítulo do manual do CakePHP.