PHP code example of zaff / challenge2

1. Go to this page and download the library: Download zaff/challenge2 library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

zaff / challenge2 example snippets


use App\Config\Core\Router;
use App\Controller\CommandeController;
use App\Controller\SecurityController;

// Routes publiques
Router::get('/', SecurityController::class, 'index');
Router::post('/login', SecurityController::class, 'authenticate');

// Routes protégées par middleware
Router::get('/list', CommandeController::class, 'index', ['auth']);
Router::get('/form', CommandeController::class, 'create', ['auth', 'isVendeur']);

// Résolution des routes
Router::resolve();

use App\Config\Core\AbstractController;

class MonController extends AbstractController
{
    public function index()
    {
        // Logique pour lister
        $this->renderHtml('ma_vue.php', ['data' => $data]);
    }

    public function create()
    {
        // Logique pour créer
    }

    public function store()
    {
        // Logique pour sauvegarder
    }

    public function show()
    {
        // Logique pour afficher un élément
    }

    public function edit()
    {
        // Logique pour éditer
    }

    public function destroy()
    {
        // Logique pour supprimer
    }
}

protected function renderHtml(string $view, array $params = [])
{
    // $view : chemin vers la vue (ex: 'commande/list.php')
    // $params : données à passer à la vue
}

use App\Config\Core\Database;

$pdo = Database::getConnection();

use App\Config\Core\App;

// Récupérer une dépendance
$pdo = App::get('pdo');

use App\Config\Core\AbstractEntity;

class MonEntity extends AbstractEntity
{
    public static function toObject(array $tableau): static
    {
        // Convertir un tableau en objet
    }

    public function toArray(Object $object): array
    {
        // Convertir un objet en tableau
    }
}

abstract class AbstractRepository
{
    abstract public function selectAll();
    abstract public function insert();
    abstract public function update();
    abstract public function delete();
    abstract public function selectById();
    abstract public function selectBy(Array $filtre);
}

// Route protégée par authentification
Router::get('/dashboard', Controller::class, 'index', ['auth']);

// Route pour vendeurs uniquement
Router::get('/admin', Controller::class, 'admin', ['auth', 'isVendeur']);

$middlewares['monMiddleware'] = 'maFonction';

function maFonction()
{
    // Logique du middleware
    if (!$condition) {
        header('Location: /erreur');
        exit;
    }
}

use App\Config\Core\Session;

$session = Session::getInstance();

// Définir une valeur
$session->set('user_id', 123);

// Récupérer une valeur
$userId = $session->get('user_id');

// Vérifier l'existence
if ($session->isset('user_id')) {
    // ...
}

// Supprimer une clé
$session->unset('user_id');

// Détruire la session
$session->destroy();

use App\Config\Core\Validator;

$validator = new Validator();

// Validation email
$validator->isEmail('email', $email, 'Email invalide');

// Validation champ vide
$validator->isEmpty('nom', $nom, 'Le nom est requis');

// Vérifier les erreurs
if ($validator->isValid()) {
    // Aucune erreur
} else {
    $errors = $validator->getErrors();
}

<!DOCTYPE html>
<html>
<head>
    <title>Mon App</title>
</head>
<body>
    <?= $contentForLayout 

// Dans config/helpers.php
dd($variable); // Affiche et arrête l'exécution

   // controller/MonController.php
   class MonController extends AbstractController
   {
       public function index()
       {
           $this->renderHtml('ma_vue.php', ['titre' => 'Bonjour']);
       }
       
       // Implémenter les autres méthodes...
   }
   

   // route/route.web.php
   Router::get('/ma-route', MonController::class, 'index');
   

miniFrameworkChallenge2/
├── config/
│   ├── core/                    # Classes du framework
│   │   ├── AbstractController.php
│   │   ├── AbstractEntity.php
│   │   ├── AbstractRepository.php
│   │   ├── App.php              # Container d'injection de dépendances
│   │   ├── Database.php         # Connexion base de données
│   │   ├── DatabaseFactory.php  # Factory pour la DB
│   │   ├── Router.php           # Système de routage
│   │   ├── Session.php          # Gestion des sessions
│   │   ├── Validator.php        # Validation des données
│   │   └── middleware.php       # Middlewares d'authentification
│   ├── bootstrap.php            # Initialisation
│   ├── env.php                  # Configuration environnement
│   └── helpers.php              # Fonctions utilitaires
├── controller/                  # Contrôleurs de l'application
├── src/
│   ├── entities/               # Entités métier
│   ├── repository/             # Couche d'accès aux données
│   └── service/                # Services métier
├── template/                   # Vues et templates
│   └── layout/                 # Layouts de base
├── route/
│   └── route.web.php           # Définition des routes
├── public/
│   └── index.php               # Point d'entrée
├── .env                        # Variables d'environnement
└── composer.json

template/
├── layout/
│   └── base.layout.php     # Layout de base
├── commande/
│   ├── list.php           # Vue liste
│   ├── form.php           # Vue formulaire
│   └── 404.php            # Page d'erreur