Acorda pra Web!

Tecnologia que vai mudar nossas vidas, depois do café.

O Núcleo do Open Ideo Framework

O nome do meu framework é Open Ideo. Depois, com mais tempo, eu explico a origem do nome, o propósito e todo o conceito por trás do desenvolvimento.

Nesse release, está presente apenas o núcleo controlador de toda aplicação, que pode servir de base pra trabalhar com qualquer classe em PHP. Baixe aqui o framework com os exemplos do post (execute os arquivos index.php 1, 2 e 3).

O Básico

Atualmente o framework possui um único arquivo, openIdeo.php. Basta colocá-lo no seu diretório web e incluir onde deseja utilizar, assim:

PHP
<?php
require 'openIdeo.php';
?>

Para criar uma classe controladora, declare-a como extendendo oiApp, com o sulfixo App sempre assim:

PHP
<?php
require 'openIdeo.php';
class blogApp extends oiApp
{
function index()
{
echo 'Hello World';
}
}
new blogApp;
?>

Note que no final eu adicionei um new blogApp, é ele que inicia o objeto.

Se você salvar isso como index.php e abrir no navegador, verá a mensagem Hello World, simples e prático. Adicionar uma nova ação é simpes:

PHP
<?php
require 'openIdeo.php';
class blogApp extends oiApp
{
function index()
{
echo 'Hello World';
}
function post($id)
{
echo 'Esse é o post '.$id;
}

}
new blogApp;
?>

Agora, chamando www.exemplo.com/index.php/post/alguma-coisa ele exibirá na tela Esse é o post alguma-coisa. Bastante prático não? Você pode adicionar quantos parâmetros você quiser no método, eles serão passados todos via URL:

PHP
<?php
require 'openIdeo.php';
class blogApp extends oiApp
{
function index()
{
echo 'Hello World';
}
function post($id)
{
echo 'Esse é o post '.$id;
}
function arquivo($ano=NULL,$mes=NULL,$dia=NULL)
{
echo "Arquivos do ano $ano, mês $mes e dia $dia";
}

}
new blogApp;
?>

Se você chamar www.exemplo.com/index.php/2007/07/01 ele mostrará a frase Arquivos do ano 2007, mês 07 e dia 01.

Métodos-Índice (AKA redirecionamento de métodos)

Uma das coisas mais legais do framework, é a possibilidade de criar métodos-índice:

PHP
<?php
require 'openIdeo.php';
class blogApp extends oiApp
{
function index()
{
echo 'Hello World';
}
function post($id)
{
static $index;
echo 'Esse é o post '.$id;
}
function postAdicionar()
{
echo 'Que tal adicionar um post?';
}

function arquivo($ano=NULL,$mes=NULL,$dia=NULL)
{
echo "Arquivos do ano $ano, mês $mes e dia $dia";
}

}
new blogApp;
?>

Agora se você chamar www.exemplo.com/index.php/postAdicionar ele exibirá Que tal adicionar um post?, mas o mais legal é que como declaramos static $index no método post, podemos chamar assim: www.exemplo.com/index.php/post/adicionar, bem mais humano.

Você pode optar por deixar a classe blogApp no arquivo index.php mesmo, ou pode salvá-la no arquivo blogApp.php, ela será carregada automaticamente quando você chamar o novo objeto através do new blogApp; no index.

O Morfador

Adicionalmente, você pode criar várias classes (por exemplo blogApp, enqueteApp e quizApp), e ao invés de chamar por cada uma delas com new, você faz um morfador, assim: oiApp::morph(). O morfador escolhe a classe que será carregada com base na URL, portanto www.exemplo.com/index.php/blog chama blogApp, www.exemplo.com/index.php/enquete chama enqueteApp e assim por diante.

Você pode inclusive limitar seu morfador, chamando oiApp::morph(’blog|enquete’) ele apenas morfa entre as classes blogApp e enqueteApp, quizApp nunca será carregada por esse morfador. Caso você limite o morfador e ele não encontre o fragmento de inicialização na URL, ele pegará o primeiro da lista de limitações, nesse caso o blog.

Podem ser chamadas quantas classes ou quantos morfadores você quiser. Você pode chamar classes ou morfadores que retornam valores, que exibem coisas, que incluem arquivos. Adicionalmente, escrever módulos para o Open Ideo permite que você controle como eles serão auto-carregados e executados. Essas demais funções do núcleo eu explicarei assim que lançar os próximos componentes do sistema.

Sei que é simples, é apenas um controlador afinal, mas o controlador mais versátil e leve (menos de 4kb) que já vi :) Estou ansioso pra ouvir opiniões e bugs (infelizmente eles existem sempre)!

6 Respostas para “O Núcleo do Open Ideo Framework”

  1. Aguinelo Pedroso diz:

    Está ficando interessante esse Framework, vou dar uma olhada com calma e posto minha opinião.
    Abraço Alexandre

  2. Tarcísio Sassara diz:

    Legal cara!
    Achei muito interessante e pequeno mesmo.
    Você pretende trabalhar mais nele?

    Parabéns pelo domínio da linguagem.

  3. Alexandre diz:

    Obrigado Tarcísio =)

    Pretendo trabalhar mais nele sim, atualmente é meu projeto de mais alta prioridade!

  4. JulioGreff diz:

    Olha, nunca trabalhei com um framework pra PHP, então não sou bom nisso, mas pelo que deu pra ver, é realmente promissor. Uma idéia muito bem bolada, gostei! Boa sorte no desenvolvimento!

  5. Alexandre diz:

    Obrigado Julio!

  6. Tarcisio Sassara diz:

    Colega, hospede seu projeto no Google Code Projects!

    Abraço.

Deixar um Comentário

XHTML: Você pode usar essas tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>