Simple, Élégant, Puissant
Découvrez la simplicité de BowPHP avec des exemples de code concrets
- Routes
- ContrĂ´leur
- Base de données
- Middleware
- Validation
- Réponses
$app->get('/hello/{name}', function($name) {
return "Hello, $name!";
});
$app->post('/users', [UserController::class, 'store']);
$app->prefix('api', function() use ($app) {
$app->get('/posts', [PostController::class, 'index']);
$app->put('/posts/{id}', [PostController::class, 'update']);
$app->delete('/posts/{id}', [PostController::class, 'destroy']);
});
namespace App\Controllers;
use Bow\Http\Request;
use Bow\Http\Response;
use App\Models\User;
class UserController
{
public function store(Request $request): Response
{
$request->validate([
'email' => 'required|email|unique:users',
'name' => 'required|min:3|max:255',
'password' => 'required|min:8'
]);
$user = User::create([
'name' => $request->get('name'),
'email' => $request->get('email'),
'password' => password_hash($request->get('password'), PASSWORD_DEFAULT)
]);
$user->persist();
return response()->json([
'message' => 'Utilisateur créé avec succès',
'user' => $user
], 201);
}
}
namespace App\Models;
use Bow\Database\Barry\Model;
class User extends Model
{
protected $hidden = ['password'];
}
// Utilisation dans un contrĂ´leur
$users = User::where('active', true)
->orderBy('created_at', 'desc')
->take(10)
->get();
$user = User::find(1);
$user->update(['name' => 'John Doe']);
// Relations
$user->posts()->where('published', true)->get();
namespace App\Middleware;
use Bow\Http\Request;
class AuthMiddleware
{
public function process(Request $request, callable $next)
{
if (!auth()->check()) {
if ($request->wantsJson()) {
return response()->json([
'message' => 'Non authentifié'
], 401);
}
return redirect('/login')
->withFlash('error', 'Veuillez vous connecter');
}
return $next($request);
}
}
// Application dans routes/app.php
$router->middleware('auth')->prefix('/', function() use ($router) {
$router->get('/dashboard', [DashboardController::class, 'index']);
$router->get('/profile', [ProfileController::class, 'show']);
});
// Validation simple
$request->validate([
'email' => 'required|email',
'age' => 'required|numeric|min:18',
'website' => 'url'
]);
// Validation personnalisée
$validation = validator($request->all(), [
'username' => 'required|alpha_dash|min:3|max:20',
'password' => 'required|min:8|confirmed',
'terms' => 'accepted'
]);
if ($validation->fails()) {
return response()->json([
'errors' => $validation->getErrors()
], 422);
}
// Règles disponibles: required, email, numeric, min, max,
// alpha, alpha_dash, url, ip, date, unique, exists, etc.
// JSON
return response()->json(['message' => 'Success'], 200);
// Vue
return view('welcome', ['name' => 'John']);
// Redirection
return redirect('/dashboard')
->withFlash('success', 'Opération réussie');
// Téléchargement
return response()->download('/path/to/file.pdf');
// Réponse personnalisée
return response('Contenu', 200)
->withHeader('Content-Type', 'text/plain')
->withCookie('name', 'value', 3600);
Pourquoi choisir Bow Framework ?
Un framework PHP moderne qui combine simplicité et puissance pour accélérer votre développement
S2R
Simple, Rapide et Robuste. Concentrez-vous sur votre projet sans vous soucier de la complexité. Bow Framework offre une architecture claire et intuitive qui vous permet de développer rapidement tout en maintenant un code propre et maintenable.
ORM
Un ORM extrêmement simple qui se nomme Barry. Interagissez avec votre base de données de manière élégante et expressive. Barry simplifie les opérations CRUD et les relations entre modèles, rendant la gestion des données plus naturelle et productive.
Extensible
Structure personnalisable à l'infini. Support de plugin et composants réutilisables. Bow Framework s'adapte à vos besoins spécifiques grâce à son architecture modulaire et son système de packages, vous permettant d'étendre les fonctionnalités selon vos exigences.
Reactjs / Vuejs
Par défaut Bow est preset Reactjs et Vuejs. Créez des interfaces utilisateur modernes et réactives avec vos frameworks JavaScript préférés. L'intégration native facilite le développement d'applications web full-stack performantes et évolutives.