# Introduction
Slim Sim est un skeleton basé sur micro framework php Slim (opens new window), 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 (opens new window) pour vos pages.
- doctrine (opens new window) en ORM pour votre base de données.
- data-fixtures (opens new window) pour les données fictives en base de données.
- migrations (opens new window) pour les migrations des données en base.
- validation (opens new window) permet d'utiliser des filtres de validation.
- csrf (opens new window) pour la sécurité des sessions.
- php-ref (opens new window) une fonction var_dump amélioré.
- phpdotenv (opens new window) pour configurer vos environnements de développement et de production.
- console (opens new window) pour des commandes console propre au framework.
- monolog (opens new window) pour gérer vos logs.
- translation (opens new window) le système multilingue.
- webpack (opens new window) pouvoir compiler, fusion et minification de vos fichiers scss, sass, css et js.
- cli-menu (opens new window) pour éxécuter les commands via un menu dans votre terminal.
# NOTE
cli-menu (opens new window) 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": "^4.0"
# Prérequis
- Php (opens new window) >= 7.2
Slim Sim se base sur des dépendances demandant une version php récente.
- MySQL/PostgreSQL/SQLite
Utilisant l'ORM Doctrine (opens new window), vous devez avoir à disposition une base de données.
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épendancesfunctions.php
les fonctions accessible partout dans le codemiddlewares.php
fichier d'appel des middlewaresroutes.php
fichier des routes
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