Caracal é um simples e extensivo nano-framework Action Based que permite você desenvolver pequenas aplicações Web e APIs RESTful de maneira rapida e fácil. Ele possui o Medoo como um database framework para gerenciar e manipular o banco de dados.
Caracal é licenciado sobre a licença MIT.
-
Baixe os arquivos
Caracal.phpeMedoo.phpe crie a pasta template no diretório root no qual vai conter seus templates/views. -
Configure seu servidor Apache criando o arquivo
.htaccesscom o seguinte conteúdo:
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
IndexIgnore *
RewriteEngine On
# Check file or folders exists
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
# Redirect all urls to index.php if no exits files/folder
RewriteRule ^ index.php [L]
- Crie seu arquivo
app.php.
Inclua o framework e defina uma instancia para ele:
require_once 'Caracal.php';
$app = new Caracal();Ou se você preferir pode passar o array com as opções do seu banco de dados que o Caracal vai setar a instancia do Medoo internamente:
$app = new Caracal([
'database_type' => 'mysql',
'database_name' => 'minhabase',
'server' => 'localhost',
'username' => 'meuusuario',
'password' => 'minhasenha'
]);Veja na documentação do Medoo como conecta-lo com os SGBDs.
Crie seu arquivo de ações (rotas):
require_once 'actions.php';Dentro do arquivo actions.php defina sua ação (rota) atribuinto uma função para manipular a requisição HTTP:
$app->action('/hello', 'GET', function() {
echo 'Ola mundo!';
});Inclua o php actions.php no arquivo app.php:
require_once 'actions.php';Finalmente, no arquivo index.php inclua o php app.php e inicie o framework:
require_once 'app.php';
$app->run();O roteamento é feito mapeando uma URL para um callback na função action() do framework.
$app->action('/hello', 'GET', function () {
echo 'Ola mundo!';
});Para retornar uma view use a função render() como no exemplo:
$app->action('/home', 'GET', function () use ($app) {
$app->render('home', ['variavel' => 'Caracal']);
});O Caracal vai buscar pelo template especificado na pasta templates através do nome do primeiro argumento.
Respostas em json podem ser retornadas através da função json() como no exemplo:
$app->action('/api/hello', 'GET', function () use ($app) {
$app->json(['versao' => '1.0', 'descricao' => 'Caracal nanoframework']);
});O Redirecionamento é feito pela função redirect() onde o parametro to é para onde vai ser redirecionado, por padrão é definido o código 302 para o redirecionamento, através do parametro stop pode encerrar o a ação ou continuar o processamento.
$app->action('/teste', 'GET', function () use ($app) {
$app->redirect('home');
});Para usar a instancia do Medoo utilize a propriedade database do framework:
$app->action('/fornecedores', 'GET', function () use ($app) {
$fornecedores = $app->database->select('fornecedores', ['nome']);
$app->json($fornecedores);
});