Le projet est déployé sur Heroku à cette adresse : https://warm-mesa-18064.herokuapp.com/. Comme Heroku met en sommeil les instances inutilisées, le premier chargement du site sera un peu plus long. Soyez patient !
Le rapport est à lire dans le fichier Rapport.md.
- Cloner le dossier (dans le dossier d'Apache, de nginx, de Wamp, ou n'importe où si vous utilisez le serveur interne PHP pour le développement)
- Créer une base de données MySQL
- Importer les données d'exemple (qui créent 2 articles et ajoutent 4 paragraphes au premier article) depuis
seed.sql - Copier le fichier
.env.exampleen.envet ajuster les paramètres de connexion à la BDD (il est aussi possible de passer les paramètres grâce à des variables d'environnement, pour des hébergements comme Heroku) - Installer Composer, et installer les dépendances (
php composer.phar installdans le cas d'une installation locale de composer,composer installpour une installation globale ou si installé avec lesetup.exesur Windows) - Dumper l'autoloader permettant de charger les fichiers automatiquement (
php composer.phar dump-autoloadoucomposer dump-autoload) - Installer NodeJS et les dépendances frontend (
yarnsi vous utilisez Yarn, ounpm install) - Compiler les fichiers frontend :
npm run prod - Lancer le serveur
- Sur un environnement Apache, le fichier
.htaccesssert à router les requêtes vers le fichierindex.php, qui dispatche ensuite aux différents contrôleurs - Sur un environnement de développement avec le serveur PHP intégré, lancer avec la commande
php -S 127.0.0.1:8080 -t public $(pwd)/index.php, qui forcera le serveur PHP à ne charger que le fichier index.php (mimant ainsi le comportement d'Apache) (si vous êtes sous Windows, il vous faut indiquer le chemin absolu versindex.phpà la main, plutôt que d'utiliser$(pwd)/index.php)
- Sur un environnement Apache, le fichier
Déploiement sur Heroku
Le projet doit être compilé avant d'être lancé, ce qui nécessite des dépendances NPM de développement. Il faut donc
passer la variable NPM_CONFIG_PRODUCTION à false, avec la commande heroku config:set NPM_CONFIG_PRODUCTION=false
L'API est accessible à partir de /api/
On manipule 2 ressources : Articles et Paragraphs.
GET /api/articles Renvoie la liste des articles
[
{
"id": 1,
"title": "First article"
},
{
"id": 2,
"title": "Second article"
},
{
"id": 3,
"title": "Third article"
}
]GET /api/articles/1 Renvoie les informations de l'article 1
{
"id": 1,
"title": "First article",
"paragraphs": [
{
"id": 1,
"content": "Lorem Ipsum"
},
{
"id": 2,
"content": "Veni vidi vici"
}
]
}Le projet utilise le système de typage de PHP 7, ainsi que les namespaces pour charger les classes automatiquement.
Composer est également utilisé pour gérer les dépendances backend :
Dotenvpour charger les paramètres depuis un fichier.envPHP_CodeSnifferpour vérifier la conformité du code aux standards PSR-1 et PSR-2
Les dépendances frontend sont gérées par NPM/yarn.
- Système de routeur pour l'API REST : https://stackoverflow.com/questions/36675596/converting-a-very-simple-htaccess-into-a-php-router
- Quelques inspirations de la formation PHP Orienté Objet de Grafikart (classes
ConfigetDatabase) - La configuration Webpack est grandement basée sur la formation Webpack de Grafikart
Thomas Gaudin & William Joncquel