Mettre en place la structure du projet
Créer le repository
Créer la base de données
Architecture de fichiers
- assets
- javascript
main.js
- styles
- sass
style.scss
- css
style.css
- controllers
AbstractController.php
DefaultController.php
UserController.php
- managers
AbstractManager.php
UserManager.php
- models
User.php
- services
Router.php
- templates
- front
- errors
not-found.html.twig
home.html.twig
layout.html.twig
- admin
layout.html.twig
.env.example
.gitignore
composer.json
index.php
Les contenus des fichiers
.env.example
# Database info
DB_NAME="databasename"
DB_USER="username"
DB_PASSWORD="password"
DB_CHARSET="utf8"
DB_HOST="db.3wa.io"
composer.json
{
"autoload":
{
"classmap":
[
"controllers/",
"managers/",
"models/",
"services/"
]
},
"require":
{
"vlucas/phpdotenv": "^5.6",
"twig/twig": "^3.0"
},
"require-dev":
{
"symfony/var-dumper": "^7.0"
}
}
Puis faire la commande
composer install
index.php
<?php
// charge l'autoload de composer
require "vendor/autoload.php";
// charge le contenu du .env dans $_ENV
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
controllers/AbstractController.php
abstract class AbstractController
{
private \Twig\Environment $twig;
public function __construct()
{
$loader = new \Twig\Loader\FilesystemLoader('templates');
$twig = new \Twig\Environment($loader,[
'debug' => true,
]);
$twig->addExtension(new \Twig\Extension\DebugExtension());
$this->twig = $twig;
}
protected function render(string $template, array $data) : void
{
echo $this->twig->render($template, $data);
}
}
managers/AbstractManager.php
abstract class AbstractManager
{
protected PDO $db;
public function __construct()
{
$connexion = "mysql:host=".$_ENV["DB_HOST"].";port=3306;charset=".$_ENV["DB_CHARSET"].";dbname=".$_ENV["DB_NAME"];
$this->db = new PDO(
$connexion,
$_ENV["DB_USER"],
$_ENV["DB_PASSWORD"]
);
}
}
.gitignore
vendor/
.env
composer.lock
Puis les commandes suivantes :
git add .gitignore
git commit -m "add gitignore"
git push
Créez ensuite un fichier .env avec les véritables informations de connexion à votre base de données :
# Database info
DB_NAME="databasename"
DB_USER="username"
DB_PASSWORD="password"
DB_CHARSET="utf8"
DB_HOST="db.3wa.io"
18 August 2025