Dica: compartilhando models, controllers e views entre aplicações no CakePHP
Olá pessoal,
estou desenvolvendo meu projeto deste ano da faculdade em CakePHP e uma coisa que ainda não havia pensado em fazer era o compartilhamento dos arquivos MVC's.
No meu projeto, estou compartilhando os models entre as 4 aplicações que fazem parte do mesmo sistema. Então, como fazer?
A primeira coisa que fiz para acelerar as coisas foi mapear o banco, mas nisso já se foram aproximadamente 40 classes models
, se eu copiasse e colasse nas outras partes do projeto, resultaria em 160 classes e com certeza em muita dor de cabeça para mantê-las sincronizadas.
A solução: bootstrap.php!
O arquivo bootstrap é carregado automaticamente depois que o arquivo app/webroot/index.php e depois que o bootstrap.php (nÃvel núcleo do Cake) é carregado. É usado para adicionar qualquer função que não for usada numa classe, pode ser usado também para dar um include/require em qualquer arquivo da sua aplicação.
No meu caso que queria adicionar um diretório para os models, então usei, nas minhas demais aplicações (tal como app2, app3 e etc):
Assim, sempre será buscado (também) os models em: /app/models/. Lembrando que DS é o directory separator, que no windows é \ e no linux é / e ROOT representa o caminho fÃsico da instalação do Cake.
Para usar com views e controllers é a mesma configuração, mas usando:
Qualquer dúvida, comentem!
Até a próxima pessoal!

Éverton said,
Outubro 12, 2007 @ 19:50
Muito boa a dica,
No projeto que estamos trabalhando, passamos por isso também quando estávamos escolhendo um framework, e foi uns dos motivos que nos levou a usar Symfony.
O Symfony e bem completo nessa parte de dividir um projeto em aplicaçõe, e compartilhar arquivos entre elas, mas ainda acho mais fácil trabalhar com os models do Cake do que com os models do Symfony, e em mais simples prefiro Cake.
Gustavo Carreno said,
Outubro 12, 2007 @ 21:00
Boas mermão !!
Bem esta é, definitivamente, de génio.
É daquelas que não lembra a ninguem mas que é puta simples!!
Valeu cara, a dica está demais!!
Um abraço de co-admin,
Gustavo Carreno
Tulio Faria said,
Outubro 12, 2007 @ 22:17
Éverton,
confesso que fiquei meio encabulado, com medo de ter que fazer alguma gambiarra...rs... Mas depois que achei o bootstrap, foi só alegria... Principalmente por esse compartilhamento estar disponÃvel através de comentários no próprio bootstrap.
Carreno,
valeu
Abraços!
Long Live CakePHP!
Victor Sobreira said,
Outubro 15, 2007 @ 02:43
Bom, adorei isso.
ja tinha ate perguntado de certa forma.
mais como seria pra trabalhar na parte do webroot?
se fosse um sistema que fosse necessário integrar a webroot de outro.
qual seria o modo?
o bootstrap.php nao da suporte a isso a nao ser pra view, controllers e models.
eu fiz praticamente uma gambiarra pra poder fazer isso.

que seria criar subdominios pra poder pegar as imagens, css, js e outras coisas que possa ser vista entre todos.
Thiago de Castro Costa said,
Outubro 15, 2007 @ 13:09
Heheheh, muito loko... valeu tulio
Tulio Faria said,
Outubro 15, 2007 @ 14:41
Victor,
então rapaz, estou procurando sobre o webroot. Sei que tem como sim... Mas ainda não encontrei... Assim que eu descobrir te aviso...
Valeu Thiago
Abraços a todos,
Victor Sobreira said,
Outubro 16, 2007 @ 16:07
o que eu sei ate agora, é criar subdominios e move para la os arquivos que forem fazer upload.
é um metodo.
Juan Basso said,
Dezembro 14, 2007 @ 12:14
Primeiramente gostaria de parabenizar o Tulio pelo post que é muito exclarecedor e que ajuda muito na hora de desenvolver. Eu tinha visto essa funcionalidade no código do cake, mas nunca parei pra pensar que daria para utilizar assim.
Victor,
Não sei é bem isso que você quer, mas é possÃvel informar o cake para utilizar outra pasta de webroot. Você pode definir a variável $webroot da classe do seu controller. Se você quer definir para todos os métodos, defina como da classe, senão defina dentro da classe com $this->webroot.
O valor é a pasta "virtual", ou seja, se os arquivos estão em http://SERVER/cake, defina como '/cake/'.
Tiago Piccinin said,
Março 20, 2008 @ 17:05
Excelente. Era o que procurava.
Obrigado pela dica, irmão.
Abraço.
Tiago
Tiago Piccinin said,
Março 24, 2008 @ 15:04
Olá, Túlio.
Solucionei um problema aqui de uma forma que não sei se é a mais correta. Vc que já passou por isso deve saber melhor.
Eu estava usando diferentes conexões aà dava erro pois dizia que não achava a conexão de um app.
Eu usei um include no meu arquivo database.php, estou incluindo o database.php de um app em outro.
Será que é esse o melhor caminho?
Abraços!!