Atenção - PHP 5.3 beta ou superior necessário.
Olá galera!
Sei que tenho andado beeeem sumido, mas vim aqui dar o segundo release do OTW.
Essa é uma versão alpha, isso é, em desenvolvimento e desaconselhável testes, sendo distribuída apenas para fins de estudos e acompanhamento técnico.
Versão: 0.1.0.2.20090727
Download: aqui
Versão do PHP necessária: 5.3 beta ou posterior.
Sobre:
Antes de mais nada, vale lembrar que todo o sistema foi reescrito.
Estava simplesmente deplorável antes, nada utilizável, apenas bonito na ideologia.
Por falar em ideologia, o novo OTW usa o conceito de MVC (Model View Controller), ou ao menos parte dele.
Ao contrário da versão anterior, essa já permite desenvolvimento sobre ela, mas é altamente não desencorajado.
O novo OTW é um framework MVC com um tiquinho quase nada de framework de templates.
O arquivo database.sql é uma tabela de testes que criei.
Vamos começar pela estrutura dos diretórios:
Temos o diretório raiz do website, com o index.php e o .htaccess.
O index.php serve basicamente como um iniciador do sistema e nada mais.
O .htaccess encaminha os caminhos da url para index.php?url=MINHA_URL_AQUI
Aí vem a pasta application
Dentro dela vamos começar pelas configurações possíveis dentro do application/config.php:
- Spoiler:
<?php
$config = array(
/* o layout que vai ser carregado por padrão
se não for mudado durante a aplicação */
'layout' => 'default',
/* Uma array com os controllers desabilitados */
'disabled' => array(),
/* Uma array com os controllers que são chamados
automaticamente quando a aplicação começa a correr */
'startup' => array(),
/* As páginas que serão forçadas a fazer reparsing
[mais explicações adiante */
'view_force_parse' => array(
'layout/default',
'page/userbar',
'page/userbar_menu'
),
/* Auto explicativo */
'mysql' => array(
'host' => 'localhost',
'user' => 'root',
'pass' => '123',
'db' => 'otw'
),
/* Root do site */
'site_root' => '/OTW New/'
);
?>
Bom, tô particularmente sem paciência, então deixe-me resumir:
Dentro de library tem os arquivos do framework em si, que fazem tudo funcionar e possui umas classes abstratas úteis (ou não).
Dentro de model tem os modelos, obviamente.
Dentro de controller tem os controllers, também obviamente.
O detalhe está no view.
As páginas da camada view da aplicação funcionam da seguinte maneira:
Antes de cada página ser chamada, o controller dela, se existir, é chamado.
O controller do layout sempre será o Index.
Na Url você pode perceber que é assim:
http://meu-site/controller/
ou
http://meu-site/controller-action/
Ou seja, cerveja!
Quer dizer...
Se o controller e/ou a action existirem, serão chamados!
E sem problemas de injection, apenas coisas com letrinhas puras são aceitas.
Ainda sobre o view, ele tem uma coisinha chamada H2P (HTML to PHP), que são tags toscas do tipo
<php:attr name="user"/>
ou
<php:view page="userbar"/>
que serão convertidas para o equivamente em PHP.
Motivo?
Não deixar o código inamigável para o webdesigner.
Ah, e lembra do 'view_force_parse' do config.php?
Pois então, serve pra isso.
Cara .view só é transformado em .parsed uma vez, a menos que esteja com o nome nesse lugar do config.
E sobre os controllers, cada um pode ter um config.php dentro de sua pasta que é automaticamente carregado e cujo as mudanças são automaticamente salvas ao fim da execução dos scripts.
Bem, é basicamente isso.
Tem outros detalhes e segredos, mas como disse, estou sem paciência.
Esse release possui um sistema de login de testes/exemplo.
Para logar: Diogo/123
Abraços.