trilado / trilado

🔺 Trilado Framework
http://trilado.vaneves.com/
5 stars 3 forks source link

Esqueleto #29

Open vaneves opened 11 years ago

vaneves commented 11 years ago

Ultimamente tive que atualizar algumas aplicações que utilizam o Trilado. Foi uma tarefa tensa, dava conflito em alguns arquivos e tal sem ao menos eu ter alterado eles.

Para facilitar a atualização do trilado seria interessante ele ter uma arquitetura que permite substituir tudo sem comprometer a aplicação. Algo como criar um esqueleto. Já havia havíamos conversado sobre isso, né @diegopso.

Então, pensei em uma solução sem muita alteração. A pasta app contem apenas o arquivo ẁwwroot/index.php com lógica do trilado. O resto são diretórios, config e routes, que apenas utilizam classes dele.

A ideia é retirar essa programação do arquivo index.php e colocar dentro do core. Ainda não pensei como, mas deixo aberto para discussão.

vaneves commented 11 years ago

Pensei na criação de um projeto Skeleton para guardar a estrutura da aplicação e o Trilado ficar apenas o diretório core.

Skeleton

O projeto Skeleton coteria a seguinte arquitetura:

.htaccess
app/
    config.php
    routes.php
    controllers/
    ...
    wwwroot/
        .htaccess
        index.php
vendors/

No arquivo index.php ficaria mais ou menos assim:

$root = str_replace('\\', '/', dirname(dirname(dirname(__FILE__))));
if(substr($root, -1) != '/') $root = $root .'/';

require_once $root . 'vendors/trilado/libs/Bootstrap.php';

new Bootstrap($root);

Como deu para perceber, o diretório core/ não existirá mais, sendo vendors/ com o diretório trilado dentro.

Trilado

O trilado será apenas o conteúdo do diretório core/. Ai é necessário readequar as importações.

diegopso commented 11 years ago

Nesse formato fica legal, como um vendor, dai poderíamos disponibilisar via composer, nem sei como se faz isso rs, ou ainda usando o git submodules...

vaneves commented 11 years ago

A primeira modificação não causará efeito negativo, mas muitos positivos. Seria a criação do arquivo core/bootstrap.php, na qual será composto pelo conteúdo atual do app/wwwroot/index.php. Só que ao invés de dirname(dirname(dirname(__FILE__))) utilizaremos dirname(dirname(__FILE__)).

No app/wwwroot/index.php ficará apenas:

require_once '../../core/bootstrap.php';

Isso inclusive resolve um problema que no NGINX, quando aponto do domínio direito para o app/wwwroot.