rsoumre/fleche

There is no license information available for the latest version (v1.0.0) of this package.

Framework PHP en français

Maintainers

Package info

github.com/Rsoumre/fleche

Homepage

Language:HTML

pkg:composer/rsoumre/fleche

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-05-04 08:36 UTC

This package is auto-updated.

Last update: 2026-05-04 08:59:18 UTC


README

Un framework PHP léger avec une API entièrement en français.

Installation

composer create-project fleche/fleche mon-projet
cd mon-projet
cp .env.exemple .env
php -S localhost:8080 -t public

Démarrage rapide

// public/index.php
$app = new Fleche\Application();

$app->routeur->get('/', function () {
    return Fleche\Reponse::texte('Bonjour le monde !');
});

$app->demarrer();

Routeur

$app->routeur->get('/articles/{slug}', [ArticleControleur::class, 'afficher']);
$app->routeur->post('/articles',       [ArticleControleur::class, 'creer']);

Contrôleurs

namespace Fleche\Controleurs;

use Fleche\Controleur;
use Fleche\Requete;
use Fleche\Reponse;

class ArticleControleur extends Controleur
{
    public function afficher(Requete $req): Reponse
    {
        return $this->vue('article', ['slug' => $req->parametres['slug']]);
    }
}

Vues

// src/vues/article.php
<h1><?= htmlspecialchars($slug) ?></h1>

Base de données

use Fleche\DB;

// Lire
$articles = DB::table('articles')->tout();
$article  = DB::table('articles')->filtrer('id', 1)->premier();
$nombre   = DB::table('articles')->compter();

// Écrire
DB::table('articles')->inserer(['titre' => 'Mon article']);
DB::table('articles')->filtrer('id', 1)->modifier(['titre' => 'Nouveau titre']);
DB::table('articles')->filtrer('id', 1)->supprimer();

Validation

$erreurs = $req->valider([
    'titre' => 'requis|chaine|max:200',
    'email' => 'requis|email',
    'age'   => 'requis|entier',
]);

if (!empty($erreurs)) {
    return Reponse::json(['erreurs' => $erreurs], 422);
}
Règle Description
requis Champ obligatoire
chaine Doit être du texte
entier Doit être un entier
numerique Doit être un nombre
email Email valide
min:X Minimum X caractères
max:X Maximum X caractères

Middlewares

$app->routeur->get('/profil', [ProfilControleur::class, 'index'])
             ->middleware(ConnexionMiddleware::class);
class MonMiddleware implements Fleche\Middleware
{
    public function traiter(Requete $requete, callable $suivant): Reponse
    {
        // avant
        $reponse = $suivant($requete);
        // après
        return $reponse;
    }
}

Sessions

use Fleche\Session;

Session::definir('utilisateur_id', 42);
Session::obtenir('utilisateur_id');
Session::a('utilisateur_id');
Session::supprimer('utilisateur_id');
Session::vider();

// Messages flash (lus une seule fois)
Session::flash('succes', 'Enregistré !');
Session::obtenirFlash('succes');

Variables d'environnement

APP_NOM=MonApp
APP_ENV=developpement
DB_HOTE=localhost
DB_NOM=ma_base
DB_UTILISATEUR=root
DB_MOT_DE_PASSE=secret
env('APP_NOM');           // "MonApp"
env('DB_PORT', 3306);     // valeur par défaut si absent

Configuration requise

  • PHP >= 8.0
  • Composer
  • MySQL / MariaDB

Licence

MIT