Skip to content

Instantly share code, notes, and snippets.

@andersonfraga
Created June 6, 2012 14:41
Show Gist options
  • Save andersonfraga/2882304 to your computer and use it in GitHub Desktop.
Save andersonfraga/2882304 to your computer and use it in GitHub Desktop.
Fiquei pensando muito sobre o que li, esses dias, quanto à idéia de 'NO-COMPLICATED-CONTROLLERS'. Estou afim de implementar algo do tipo abaixo. Talvez seja bacana. Talvez não...
<?php
namespace Test;
use Eflop\Dispatcher\Router\Handlers\Post;
use Eflop\Dispatcher\Router\Register;
$register = new Register();
// Home
// ANYWHERE METHOD example.com
$register->any('/')->accept(['text/html']);
// Home
// GET example.com
$register->get('/')
->call(['Test\Model\News', 'list'])
->call(['Test\Model\Content', 'list']) // yeah! multiple calls!
->cache('1 hour')
->accept(['text/html']);
// News list
// GET example.com/news[.html]
$register->get('/news')
->call(['Test\Model\News', 'list'])
->cache('tomorrow')
->accept(['text/html']);
// News item
// GET example.com/news/1234[.html|.json]
$register->get('/news/(?P<id>\d+)')
->call(
['Test\Model\News', 'getById'],
['id']
)
->cache('2 days')
->accept(['text/html', 'application/json']);
// News comment post
// POST example.com/news/1234/comment[.html]
$register->post('/news/*/comment')
->map(['id' => '([0-9]+)'])
->call(
['Test\Model\Comment', 'saveForNewsId'],
['id', Post::INJECT_PARAMETERS] // inject $_POST like second parameter in saveForNewsId method
)
->accept(['application/json'])
->needCSRFKey(true); // need csrf key-protect
return $register;
@alganet
Copy link

alganet commented Jun 6, 2012

Parece legal. Tem algumas coisas bem similares ao Respect\Rest, talvez você se interesse em contribuir conosco tb =D

@andersonfraga
Copy link
Author

Sim. Me inspirei no Respect. Mas quis tirar a lógica do 'fluxo' de dados que, por menor que exista, ainda há nele..
Talvez seja uma proposta/idéia que eu possa fazer e efetuar fork lá :D

Acho a discussão válida. ;)

@alganet
Copy link

alganet commented Jun 13, 2012

Também tenho interesse em deixar o Respect puramente declarativo, mas ainda falta muito código pra isso! Você já chegou a implementar algum protótipo da tua idéia?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment