Controladores

Os controladores são uma das diferentes maneiras de organizar seu projeto; com eles, você pode centralizar a lógica de tratamento de requisições.

Criar rotas

Para criar um Controlador, crie um arquivo PHP na system/Controllers/ pasta, por exemplo: FooBar.php, e adicione o seguinte conteúdo:

<?php namespace Controllers; class FooBar { public function hello($app, $params) { return 'Hello World'; } public function hundop($app, $params) { return 'Hundo P!'; } }

Em seguida, system/main.php crie uma rota apontando para o controlador:

<?php $app->action('GET', '/hello', 'FooBar::hello'); $app->action('GET', '/100', 'FooBar::hundop');

Também é possível adicioná-lo a um subdiretório, por exemplo system/Controllers/Foo/Bar/Baz.php, e adicionar esse subdiretório ao conteúdo (não se esqueça de ajustar o namespace):

<?php namespace Controllers\Foo\Bar; class Baz { public function say($app, $params) { return 'Hello World'; } }

Em seguida, adicione a rota:

<?php $app->action('GET', '/say', 'Controllers\Foo\Bar\Baz::say');

Defina o prefixo para os namespaces do controlador.

Para evitar escrever o namespace repetidamente, caso ele seja longo, você pode alterar o prefixo do namespace para rotas subsequentes ou rotas por escopo, por exemplo:

<?php $app->setNamespace('Controllers\\Foo\\Bar'); // system/Controllers/Foo/Bar/Baz.php $app->action('GET', '/', 'Baz::index'); $app->action('GET', '/create', 'Baz::create'); $app->action('GET', '/read', 'Baz::read'); $app->action('GET', '/update', 'Baz::update'); $app->action('GET', '/delete', 'Baz::delete'); // system/Controllers/Foo/Bar/Baz.php $app->setNamespace('Controllers\\Halloween\\Ghost\\'); // system/Controllers/Halloween/Ghost/Boo.php $app->action('GET', '/halloween/trick', 'Boo::trick'); $app->action('GET', '/halloween/treat', 'Boo::treat');

A pasta Controllers não é obrigatória; você pode alterar completamente o namespace, mas para isso precisará adicionar a entrada "psr-4": em composer.json, que atualmente deve ser:

... "autoload": { "psr-4": { "Commands\\": "system/Commands", "Controllers\\": "system/Controllers", "Models\\": "system/Models" } }, ...

Alterar para:

... "autoload": { "psr-4": { "Commands\\": "system/Commands", "Controllers\\": "system/Controllers", "CustomFolder\\": "system/CustomFolder", "Models\\": "system/Models" } }, ...

Em seguida, configure-o em system/main.php:

<?php $app->setNamespace('CustomFolder\\Foo\\Bar'); // system/CustomFolder/Foo/Bar/Baz.php $app->action('GET', '/', 'Baz::index'); $app->action('GET', '/create', 'Baz::create'); $app->action('GET', '/read', 'Baz::read'); $app->action('GET', '/update', 'Baz::update'); $app->action('GET', '/delete', 'Baz::delete'); // Restores the original prefix $app->setNamespace('Controllers'); // system/Controllers/Hello.php $app->action('GET', '/', 'Hello::index');
Página inicial
Apoie com uma estrela no GitHub