Aller au contenu principal
Version: 5.x

Structure de l'application

Vue d'ensemble​

Bow Framework suit le modèle MVC (Modèle-Vue-Contrôleur), une architecture éprouvée qui sépare clairement les responsabilités de votre application.

bow-app/
├── app/ # Logique de l'application
│ ├── Configurations/ # Configurations personnalisées
│ ├── Controllers/ # Contrôleurs HTTP
│ ├── Events/ # Gestionnaires d'événements
│ ├── Exceptions/ # Exceptions personnalisées
│ ├── Listeners/ # Écouteurs d'événements
│ ├── Middlewares/ # Middlewares HTTP
│ ├── Models/ # Modèles de données (ORM)
│ ├── Commands/ # Commandes console personnalisées
│ ├── Services/ # Services métier
│ ├── Tasks/ # Tâches asynchrones (Queue)
│ ├── Validations/ # Règles de validation
│ └── Kernel.php # Configuration du noyau
├── assets/ # Ressources frontend (sources)
│ ├── css/ # Fichiers CSS
│ ├── js/ # Fichiers JavaScript
│ └── sass/ # Fichiers SCSS
├── config/ # Fichiers de configuration
│ ├── app.php # Configuration générale
│ ├── database.php # Configuration base de données
│ ├── mail.php # Configuration email
│ ├── storage.php # Configuration stockage
│ └── view.php # Configuration des vues
├── lang/ # Fichiers de traduction
│ ├── en/ # Traductions anglaises
│ └── fr/ # Traductions françaises
├── migrations/ # Migrations de base de données
├── public/ # Point d'entrée web (documentroot)
│ ├── index.php # Front controller
│ ├── css/ # CSS compilés
│ └── js/ # JS compilés
├── routes/ # Définition des routes
│ └── app.php # Routes de l'application
├── seeders/ # Seeders de données
├── templates/ # Vues Tintin
│ ├── layouts/ # Layouts partagés
│ └── partials/ # Composants réutilisables
├── tests/ # Tests unitaires et fonctionnels
├── var/ # Fichiers générés
│ ├── cache/ # Cache de l'application
│ ├── logs/ # Journaux d'erreurs
│ ├── session/ # Sessions utilisateurs
│ ├── storage/ # Fichiers uploadés
│ └── view/ # Cache des vues compilées
├── .env.json # Variables d'environnement
├── bow # CLI Bow Console
├── composer.json # Dépendances PHP
└── package.json # Dépendances Node.js

Dossier app/​

Le cœur de votre application. C'est ici que vous écrivez la logique métier.

Controllers/​

Les contrôleurs gèrent les requêtes HTTP et retournent des réponses.

app/Controllers/UserController.php
namespace App\Controllers;

class UserController
{
public function index()
{
return view("users.index");
}
}

Models/​

Les modèles représentent vos tables de base de données.

app/Models/User.php
namespace App\Models;

use Bow\Database\Barry\Model;

class User extends Model
{
protected ?string $table = "users";
}

Services/​

Les services encapsulent la logique métier complexe. Voir la documentation des services.

Middlewares/​

Les middlewares filtrent les requĂŞtes HTTP. Voir la documentation des middlewares.

Events/ et Listeners/​

Système d'événements pour découpler votre application. Voir la documentation des événements.

Tasks/​

Tâches asynchrones exécutées en arrière-plan via la file d'attente. Voir la documentation des tâches.

Kernel.php​

Configure le démarrage de l'application :

app/Kernel.php
namespace App;

class Kernel extends \Bow\Application\Kernel
{
public function configurations(): array
{
return [
// Liste des configurations Ă  charger
\Bow\Database\DatabaseConfiguration::class,
\Bow\Mail\MailConfiguration::class,
];
}

public function middlewares(): array
{
return [
"auth" => \App\Middlewares\AuthMiddleware::class,
];
}
}

Dossier config/​

Contient tous les fichiers de configuration de l'application.

FichierDescription
app.phpConfiguration générale (nom, timezone, locale)
database.phpConnexions aux bases de données
mail.phpConfiguration SMTP et drivers email
storage.phpDisques de stockage (local, S3, FTP)
view.phpMoteur de template et cache
session.phpGestion des sessions
cache.phpConfiguration du cache

Dossier routes/​

Définit les points d'entrée de votre API ou application web.

routes/app.php
$app->get("/", "HomeController::index");
$app->get("/users", "UserController::index");
$app->post("/users", "UserController::store");
$app->get("/users/:id", "UserController::show");

Dossier templates/​

Vos vues Tintin (ou Twig/Blade selon configuration).

templates/
├── layouts/
│ └── app.tintin.php # Layout principal
├── partials/
│ ├── header.tintin.php # En-tête
│ └── footer.tintin.php # Pied de page
├── home.tintin.php # Page d'accueil
└── users/
├── index.tintin.php # Liste des utilisateurs
└── show.tintin.php # Détail utilisateur

Dossier public/​

Le seul dossier accessible depuis le web.

Sécurité

Configurez votre serveur web pour pointer vers ce dossier uniquement. Ne jamais exposer les autres dossiers.

Dossier var/​

Fichiers générés automatiquement par l'application.

Sous-dossierDescription
cache/Cache de l'application (config, routes)
logs/Fichiers de log (erreurs, debug)
session/Fichiers de session (si driver file)
storage/Fichiers uploadés par les utilisateurs
view/Vues compilées (cache)
Permissions

Assurez-vous que le serveur web a les droits d'écriture sur var/.

Fichier .env.json​

Variables d'environnement sensibles (non versionnées) :

.env.json
{
"APP_NAME": "Mon Application",
"APP_ENV": "development",
"APP_DEBUG": true,
"APP_URL": "http://localhost:8000",
"DB_CONNECTION": "mysql",
"DB_HOST": "127.0.0.1",
"DB_DATABASE": "bow_app",
"DB_USERNAME": "root",
"DB_PASSWORD": ""
}

Bonnes pratiques​

Organisation du code
  • Un fichier = une classe : Suivez les conventions PSR-4.
  • Nommage explicite : UserController, PaymentService, OrderCreatedEvent.
  • SĂ©paration des responsabilitĂ©s : ContrĂ´leurs lĂ©gers, logique dans les services.
  • Configuration centralisĂ©e : Utilisez config/ et .env.json.

Il manque quelque chose ?

Si vous rencontrez des problèmes avec la documentation ou si vous avez des suggestions pour améliorer la documentation ou le projet en général, veuillez déposer une issue pour nous, ou envoyer un tweet mentionnant le compte Twitter @bowframework ou sur directement sur le github.