Introduction
Slim Sim est un skeleton basé sur micro framework php Slim, adoptant une architecture MVC simple et efficace, il vous permettera de développer vos sites et applications web dans une structure propre et organisé. L’architecture sous-jacente est construite à l’aide de technologies bien établies et à jour.
Certaines de ces technologies clés :
- twig-view pour vos pages.
- doctrine en ORM pour votre base de données.
- data-fixtures pour les données fictives en base de données.
- validation permet d'utiliser des filtres de validation.
- csrf pour la sécurité des sessions.
- php-ref une fonction var_dump amélioré.
- phpdotenv pour configurer vos environnements de développement et de production.
- console pour des commandes console propre au framework.
- monolog pour gérer vos logs.
- runtracy la barre de débogage.
- slim-secure-session-middleware un helper pour la gestion des sessions.
- translation le système multilingue.
- webpack pouvoir compiler, fusion et minification de vos fichiers scss, sass, css et js.
- slim-router-js pour générer les urls des routes directement dans vos vues twig.
- cli-menu pour éxécuter les commands via un menu dans votre terminal.
NOTE
cli-menu utilise l'extension php posix qui n'est pas supporter sur windows, pensez à retirer la ligne suivante dans votre compose.json si vous êtes sur windows :
"php-school/cli-menu": "^3.0"
Prérequis
- Php >= 7.1.3
Slim Sim se base sur des dépendances demandant une version php récente.
- MySQL/PostgreSQL/SQLite
Utilisant l'ORM Doctrine, vous devez avoir à disposition une base de données.
- Node.js >= 6.11.5
Le framework dispose de webpack 4 pour la partie front-end et a besoin d'une version nodejs la plus récente que possible.
- OS supporté: Linux, MacOS et Windows
Linux et MacOS sont toutefois recommandé.
Installation
Composer
$ composer create-project simondevelop/slim-sim <projet_name>
$ cd <projet_name>
$ composer install
$ npm install
Git
$ git pull https://github.com/SimonDevelop/slim-sim.git <projet_name>
$ cd <projet_name>
$ composer install
$ npm install
Vérifiez que le fichier .env
a bien été créé, il s'agit du fichier de configuration de votre environnement ou vous définissez la connexion à la base de données, l'environnement dev
ou prod
et l'activation du cache de twig.
Si jamais le fichier n'a pas été créé, vous pouvez le faire manuellement en dupliquant le fichier .env.example
.
N'oubliez pas de vérifier que votre configuration d'environnement de votre base de données corresponde bien et d'autoriser le dossier storage
à l'écriture chmod 774
par exemple.
Configuration
Apache2
<VirtualHost *:8080>
ServerName 127.0.0.1:8080
DocumentRoot "/path/to/project/slim-sim/public/"
<Directory "/path/to/project/slim-sim/public/">
Options -Indexes +FollowSymLinks
AllowOverride all
Order allow,deny
Allow from all
Require all granted
</Directory>
</VirtualHost>
Nginx
server {
listen 8080;
server_name localhost;
index index.php;
root /path/to/project/slim-sim/public;
error_log /path/to/example.error.log;
access_log /path/to/example.access.log;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ ^/.+\.php(/|$) {
try_files $uri /index.php = 404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Docker
Vous avez à votre disposition un fichier docker-compose.yml
à la racine du projet, adapter les fichiers de configuration de y compris ceux de docker dans le dossier docker
puis lancer la commande :
$ docker-compose up -d
Arborescence
app/src/
dossier de l'applicationControllers/
dossier des controllersEntity/
dossier des entités doctrineMiddlewares/
dossier des middlewaresViews/
dossier des vues twig
assets/
dossier des fichiers front-end (css/js...)config/
dossier des fichiers de configuration de l'applicationcommands
dossier de configuration des commandes terminaltranslations
dossier des fichiers de traduction utilisés dans les vues twigcli-config.php
fichier cli pour les commandes doctrinecontainer.php
le container des dépendanceserror_pages.php
les vues en cas d'erreurfunctions.php
les fonctions accessible partout dans le codemiddlewares.yml
fichier d'appel des middlewaresroutes.yml
fichier des routestracy.php
fichier de configuration de tracy (debugbar)
public/
dossier public de l'applicationstorage
cache/
cache twig de l'applicationlogs/
les logs de monolog
tests/
dossier des tests unitaires.env
fichier d'environnement base de donnéesconsole
fichier php des commandes cliwebpack.config.js
fichier de configuration de webpack