Skip to content
This repository was archived by the owner on Feb 28, 2018. It is now read-only.

Guide du contributeur

bfontaine edited this page Oct 2, 2012 · 1 revision

Dans ce guide, on supposera que vous avez les bases d’IO2 concernant PHP, MySQL, HTML et CSS, et que vous connaissez la POO en Java.

0. Définitions

Syntaxe POO en PHP

La POO en PHP fonctionne globalement de la même façon qu'en Java, seule la syntaxe change:

  • class MaClass {} : déclaration d’une classe, comme en Java
  • $this : équivalent de this en Java
  • self : référence la classe courante (pas d’équivalent en Java)
  • $this->foo() : équivalent de this.foo() en Java
  • self::foo() : équivalent de MaClass.foo() (appel de fonction statique)

MVC

MVC (Modèle/Vue/Contrôleur) est un patron de conception où le programme est divisé en trois parties :

  • le modèle : la partie qui gère la base de données
  • la vue : la partie qui gère l’interface avec l’utilisateur
  • le contrôleur : la partie qui fait le lien entre les deux précédentes

Pour un site Web, la vue désigne les templates (on dit « les vues »), i.e. ces fichiers dans lesquels, en IO2, vous mélangiez HTML et PHP, pour l'affichage à l'utilisateur; le contrôleur désigne les fonctions (on dit « les contrôleurs ») que vous utilisiez pour gérer, par exemple, les envois de formulaires et toute la « logique » du site. Le modèle désigne l’ensemble des fonctions que vous utilisiez pour faire les insertions en MySQL, les SELECT, etc.

ORM

Un ORM (Object-Relational Mapping) est un outil qui permet de faire un lien entre des objets (ici, en PHP) et une base de données. Avec ce type d’outil, toutes les opérations de base de données se résument à des appels de méthodes sur des objets. Exemple :

<?php

$user = new User();
$user->setUsername('JBY');
$user->setAge(42);
$user->setRank('admin');
$user->save();

?>

Le code précédent est équivalent à :

INSERT INTO users ('username', 'age', 'rank') VALUES('JBY', 42, 'admin');

L’ORM se charge également d’« échapper » les caractères spéciaux et du formatage. L’ORM qu’on utilise pour le site s’appelle Propel.

Routes

En IO2, votre site avait probablement des URL du type /index.php?page=tralala, et l’affichage de la page dépendait du paramètre $_GET['page']. Ici, c'est pareil, sauf qu’on préfère avoir des URL un peu plus jolies comme /page/tralala. On utilise donc des routes, qui sont des associations entre des URL et des fonctions PHP. Pour chaque URL donnée, une fonction PHP qui retourne une chaîne est appelée, et c’est cette chaîne qui est retournée au navigateur (c’est donc du HTML, dans 99% des cas). Pour gérer ces routes, on utilise Limonade. Limonade permet en fait de gérer un site Web dans son ensemble, mais il est trop léger pour ce qu’on veut faire ici. Les routes sont définies dans le fichier index.php de la façon suivante :

<?php

// associe l'URL '/page/tralala' à la fonction
// affiche_tralala(), quand on appelle l'URL en GET (i.e. "normalement")
dispatch('/page/tralala', 'affiche_tralala');

// associe la même URL à la fonction 'verifie_formulaire' lorsqu'on fait
// une requête POST (i.e. on envoi des données de formulaire).
dispatch_post('/page/tralala', 'verifie_formulaire');
?>

Template

Un template est un fichier qui défini ce qui sera affiché à l’utilisateur, et qui contient généralement un squelette en HTML et des variables dont les valeurs sont données par PHP. Exemple :

<html>
  <head><!-- … --></head>
  <body>
    <h1><?php echo($titre); ?></h1>
    <p>
      <?php echo($texte); ?>
    </p>
  </body>
?>

[À continuer]

1. Conventions

Tout le code est écrit en anglais, y compris les commentaires, les fonctions, variables, etc.

[À continuer]: conventions de codage.

2. Outils

Le site est fait en PHP, et les outils utilisés sont les suivants :

  • Propel, comme ORM (cf section dédiée)
  • Limonade, pour les routes (cf section précédente)
  • Twig, pour les templates (cf section dédiée)
  • PHPass pour hasher les mots de passes

[À continuer]

Clone this wiki locally