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.php
eMedoo.php
e crie a pasta template no diretório root no qual vai conter seus templates/views. -
Configure seu servidor Apache criando o arquivo
.htaccess
com 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);
});