PHPackages                             annaetwumi/tp - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. annaetwumi/tp

ActiveLibrary

annaetwumi/tp
=============

00PHP

Since Sep 9Pushed 3y ago1 watchersCompare

[ Source](https://github.com/wumiolabisi/3wa-patterns)[ Packagist](https://packagist.org/packages/annaetwumi/tp)[ RSS](/packages/annaetwumi-tp/feed)WikiDiscussions main Synced today

READMEChangelogDependenciesVersions (1)Used By (0)

Présentation
============

[](#présentation)

Le Framework que nous avons développé permet de créer une application web avec beaucoup de facilité.

Prérequis
---------

[](#prérequis)

- PHP 8
- Ce Framework se base sur les principes SOLID. Il faudra les respecter durant l'utilisation si vous souhaitez qu'il n'y ait pas de bugs insolites.

Outils externes inclus dans ce Framework
----------------------------------------

[](#outils-externes-inclus-dans-ce-framework)

- Symfony HTTP Foundation : pour la gestion des variables globales HTTP
- Symfony Routing : pour la gestion des routes
- Symfony Event Dispatcher
- PHPUnit : pour tester vos classes

Architecture
============

[](#architecture)

```
TP
    public
        index.php
    src
        Controller
            AboutController.php
            HomeController.php
        pages
            about.php
            home.php
    tests
        IndexTest.php
    vendor
        toutes les librairies nécessaires
    composer.json
    composer.lock
    readme.md
```

Installation
============

[](#installation)

```
git clone https://github.com/wumiolabisi/3wa-patterns.git
```

Les routes
==========

[](#les-routes)

Grâce au Routing Component de Symfony intégré dans ce Framework, nous avons facilité la gestion des urls dans votre application. Au départ, vous aurez deux pages par défaut : la page d'accueil "home" et la page "A propos". Ce sont des pages facultatives mais qui pourront vous servir de modèle pour construire votre app.

Ajouter une nouvelle page
-------------------------

[](#ajouter-une-nouvelle-page)

Pour mon-fichier.php lié à l'url mon-app.fr/ma-page suivez les étapes :

1. Créez vos pages dans le dossier src/pages
2. Dans le fichier routes.php présent dans le dossier src, entrez le nom de votre fichier ainsi que le nom de votre route comme suit

```
/* URL AVEC VARIABLE */
$routes->add('nom-fichier', new Route('/ma-page/{var1}', ['var1' => 'valeur par défaut']));

/* URL SIMPLE */
$routes->add('nom-fichier', new Route('/ma-page'));
```

Ajouter de nouvelles méthodes à une page
----------------------------------------

[](#ajouter-de-nouvelles-méthodes-à-une-page)

En s'inspirant de Symfony, ce Framework propose d'avoir un *controller* par page, soit une classe homonyme qui gère une page unique.

Pour lier un *controller* à une page spécifique :

1. Créer votre MaPageController.php dans le dossier src/Controller et codez votre classe et ses méthodes.
2. Rendez-vous dans le fichier routes.php qui se situe dans le dossier src
3. Ajouter dans la variable **callable** le nom de votre controller ainsi que la méthode a exécuter :

```
$routes->add('home', new Route('/home/{name}', [
    'name' => 'World',
    'callable' => 'App\Controller\AboutController@about'
]));
```

Créer des événements
====================

[](#créer-des-événements)

Pour gérer les événements, nous utilisons l'Event Dispatcher conçu par Symfony. A partir de ce composant, nous fournissons trois types de *Listener*

- Sur la requête HTTP : app.request
- Sur les controller: app.callable
- Sur la réponse HTTP : app.response

Exemple d'utilisation
---------------------

[](#exemple-dutilisation)

Soit une variable dans ma page Home qui s'appelle *name*. Par défaut, cette variable sera égale à World. Si je souhaite assigner à cette variable une autre valeur, voici le code à utiliser dans mon fichier index.php :

```
/* ... */

$dispatcher->addListener('app.request', function (RequestEvent $event) {
    $event->getRequest()->attributes->set('name', 'Mon prénom');
});

/* ... */
```

Tests
=====

[](#tests)

Le framework embarque PHPUnit par défaut et est donc compatible avec cet outil de tests unitaires. Voir la documentation PHPUnit. Avec la version initiale, vous aurez accès à un fichier qui servira de template pour vos fichiers de tests. Voici une liste non exhausitve des méthodes utilisables :

- Pour tester vos requêtes HTTP, vous pouvez utiliser l'objet Request fourni par Symfony.

###  Health Score

14

—

LowBetter than 1% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity0

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity25

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/b1b40727ecf695b2c169520046fdced60dcfb7a1680d53e009cea817428595a1?d=identicon)[wumiolabisi](/maintainers/wumiolabisi)

---

Top Contributors

[![wumiolabisi](https://avatars.githubusercontent.com/u/14930804?v=4)](https://github.com/wumiolabisi "wumiolabisi (15 commits)")

### Embed Badge

![Health badge](/badges/annaetwumi-tp/health.svg)

```
[![Health](https://phpackages.com/badges/annaetwumi-tp/health.svg)](https://phpackages.com/packages/annaetwumi-tp)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
