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.example
en.env
et 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 install
dans le cas d'une installation locale de composer,composer install
pour une installation globale ou si installé avec lesetup.exe
sur Windows) - Dumper l'autoloader permettant de charger les fichiers automatiquement (
php composer.phar dump-autoload
oucomposer dump-autoload
) - Installer NodeJS et les dépendances frontend (
yarn
si vous utilisez Yarn, ounpm install
) - Compiler les fichiers frontend :
npm run prod
- Lancer le serveur
- Sur un environnement Apache, le fichier
.htaccess
sert à 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 :
Dotenv
pour charger les paramètres depuis un fichier.env
PHP_CodeSniffer
pour 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
Config
etDatabase
) - La configuration Webpack est grandement basée sur la formation Webpack de Grafikart
Thomas Gaudin & William Joncquel