PHPackages                             caracal/caracal - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. caracal/caracal

ActiveProject[Framework](/categories/framework)

caracal/caracal
===============

A ready-to-use route system

30PHP

Since Jul 14Pushed 5y ago1 watchersCompare

[ Source](https://github.com/drmcarvalho/caracal)[ Packagist](https://packagist.org/packages/caracal/caracal)[ RSS](/packages/caracal-caracal/feed)WikiDiscussions master Synced today

READMEChangelog (1)DependenciesVersions (1)Used By (0)

O que é o Caracal?
==================

[](#o-que-é-o-caracal)

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](https://medoo.in/) como um database framework para gerenciar e manipular o banco de dados.

License
=======

[](#license)

Caracal é licenciado sobre a licença MIT.

Instalação
==========

[](#instalação)

1. Baixe os arquivos `Caracal.php` e `Medoo.php` e crie a pasta template no diretório root no qual vai conter seus templates/views.
2. Configure seu servidor Apache criando o arquivo `.htaccess` com o seguinte conteúdo:

```

    Options -MultiViews

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]

```

3. 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](https://medoo.in/api/new) 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();
```

Roteamento
==========

[](#roteamento)

O roteamento é feito mapeando uma URL para um callback na função `action()` do framework.

```
$app->action('/hello', 'GET', function () {
	echo 'Ola mundo!';
});
```

Views
-----

[](#views)

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.

Json
----

[](#json)

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']);
});
```

Redirecionamento
================

[](#redirecionamento)

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');
});
```

Banco de dados
==============

[](#banco-de-dados)

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);
});
```

###  Health Score

17

—

LowBetter than 6% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity33

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/01492f7c83db492e081fbf4c45e7e3fb1c0bfd0c75f0ef53fb25ffc04665146e?d=identicon)[drmcarvalho](/maintainers/drmcarvalho)

---

Top Contributors

[![drmcarvalho](https://avatars.githubusercontent.com/u/7807468?v=4)](https://github.com/drmcarvalho "drmcarvalho (9 commits)")

---

Tags

api-restcaracalframeworknano-frameworkphproutersimple

### Embed Badge

![Health badge](/badges/caracal-caracal/health.svg)

```
[![Health](https://phpackages.com/badges/caracal-caracal/health.svg)](https://phpackages.com/packages/caracal-caracal)
```

###  Alternatives

[laravel/telescope

An elegant debug assistant for the Laravel framework.

5.2k67.8M192](/packages/laravel-telescope)[spiral/roadrunner

RoadRunner: High-performance PHP application server and process manager written in Go and powered with plugins

8.4k12.2M84](/packages/spiral-roadrunner)[nolimits4web/swiper

Most modern mobile touch slider and framework with hardware accelerated transitions

41.8k177.2k1](/packages/nolimits4web-swiper)[laravel/dusk

Laravel Dusk provides simple end-to-end testing and browser automation.

1.9k36.7M259](/packages/laravel-dusk)[laravel/prompts

Add beautiful and user-friendly forms to your command-line applications.

708181.8M596](/packages/laravel-prompts)[cakephp/chronos

A simple API extension for DateTime.

1.4k47.7M121](/packages/cakephp-chronos)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
