Votre guide dans les plaines du far-web

Formation développeur web


« Donne un poisson à un homme, tu le nourris pour un jour. Apprends-lui à pêcher, tu le nourris pour toujours. » Lao Tseu

Présentation

Mis à jour le

Nous allons voir dans ce chapitre de nombreuses notions qui sont utilisés notamment dans les frameworks PHP MVC.

Routeur

Mis à jour le

Un routeur est un des éléments essentiel au fonctionnement d'une application web moderne. Il permet de gérer des routes, un peu comme on aiguillerai la trajectoire d'un train sur un réseau ferré. 

(image visible sur la plateforme de formation)


Habituellement, lorsqu'une requête arrive sur un serveur web, le serveur va appeler…

~~ Fin de l'extrait ~~

Le modèle MVC

Mis à jour le

La grande majorité des frameworks PHP sont organisés autour d'une implémentation des design patterns Modèle / Vue / Contrôleur (on parle alors de MVC). Ce choix technique s'est avéré très adapté pour la réalisation d'applications web en mode client/serveur.

Mais c'est quoi le MVC ?

Le MVC consiste…

~~ Fin de l'extrait ~~

La temporisation de sortie

Mis à jour le

Les fonctions ob_start() et ob_get_clean() sont primordiales pour la création de vues souples. L'idée, c'est qu'au lieu d'appeler simplement un fichier à l'aide d'une inclusion standard (require, include,...), on va faire en sorte de retourner le rendu de la vue sous forme de chaîne de caractère…

~~ Fin de l'extrait ~~

La réponse du framework : statut, chaîne HTML

Mis à jour le

Un des rôles du contrôleur, c'est de construire la réponse HTTP qui va être renvoyée au client (voir les images précédentes). On va donc lui rajouter certains éléments pour qu'il puisse mieux remplir ce rôle : 

  1. un attribut content : contiendra le corps de la réponse, la payload (HTML,…
~~ Fin de l'extrait ~~

Connecter le modèle à la base de données

Mis à jour le

Maintenant que nous avons une vue et un contrôleur améliorés, nous allons intégrer PDO à notre framework, afin de pouvoir travailler avec une base de données.

Pour ce faire, on va passer par la création d'une classe supplémentaire : Database.

Cette classe sera spécialisée dans la connexion avec…

~~ Fin de l'extrait ~~

Autoloading

Mis à jour le

L'autoloading est très pratique car il vous permet de ne plus avoir à penser d'inclure les fichiers des classes avant de vous en servir. Cela se fait automatiquement, et c'est bien pour deux raisons :

  1. certaines parties de votre code peuvent avoir besoin de nombreuses classes pour fonctionner, cela évite d'avoir…
~~ Fin de l'extrait ~~

Namespaces

Mis à jour le

Les namespaces (ou espaces de nom) sont une façon de cloisonner des fichiers, et d'établir une sorte d'arborescence virtuelle au sein de votre application, décorrélée de l'arborescence de votre système de fichier. Cela existe afin de pouvoir utiliser des variables, classes ou fonctions, qui auraient potentiellement le même nom. 

On…

~~ Fin de l'extrait ~~

Les classes métiers : contrôleurs et modèles personnalisés

Mis à jour le

Pour l'instant, notre framework ne contient que des classes "principales" : Model, Database, Vue, Controlleur, etc... En réalité, ces classes ne seront que les classes "parentes" de toutes vos classes métiers. 

Par exemple, dans une application d'agence immobilière, vous aurez des classes Annonces, Villes, Agents, Clients, etc... et ces classes vont…

~~ Fin de l'extrait ~~

extract() : ou commencer se débarrasser de $data dans les vues

Mis à jour le

La fonction extract() est utile dans la gestion des vues. Elle permet de transformer le contenu d'un tableau en autant de variables distinctes. Cela permet de traiter les variables envoyées à la vue plus facilement.


Exemple d'utilisation

(image visible sur la plateforme de formation)

Cette page affichera…

~~ Fin de l'extrait ~~

Faire un constructeur de requete SQL

Mis à jour le

Voici un exemple de construction de requetes via des méthodes du Model (chaînées) :

<?

class Database {
static public function connect(){
try {
return new PDO("mysql:host=localhost; dbname=agenceimmo;", 'root', '');
} catch (PDOException $e) {
echo "Erreur!: " . $e->getMessage() . "<br/>";
die();
}
}
}

class Model extends Database{

public $query…
~~ Fin de l'extrait ~~

Classe Conf

Mis à jour le

La classe Conf permet de gérer les variables d'environnements. Elle va charger le fichier env.php pour mettre a disposition toutes les variables nécessaire au fonctionnement de l'appli (identifiant DB, type d'environnement, url de l'application, etc...)

Plus de détails dans la doc de la classe Conf.


~~ Fin de l'extrait ~~

Classe Router

Mis à jour le

Afin de mieux gérer les possibilités du routeur, faire une classe Routeur qui se chargera de gérer toutes les problématiques et besoin de routing.

Plus de détails dans la doc de la classe Router.
Attention : le routeur décrit dans la doc détermine le…
~~ Fin de l'extrait ~~

Classe System

Mis à jour le

Dans la version actuelle du framework, je crée une classe System qui gère des problématiques de haut niveau, tel que l'autoloading, la gestion de certaines erreurs, etc...

Plus de détails dans la doc de la classe System.
~~ Fin de l'extrait ~~

Créer des librairies

Mis à jour le

image, email, session, authentification