Introduction

C'est quoi SIM ?

SIM est un framework PHP basé sur le micro framework 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 de SIM est construite à l’aide de technologies bien établies et à jour. Cela permet de garantir que SIM est simple à utiliser. Certaines de ces technologies clés :

Prérequis

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.

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 toute fois recommandé.

Installation

Composer

$ composer create-project horyzone/sim <projet_name>
$ cd <projet_name>
$ composer install
$ npm install

Git

$ git pull https://github.com/Horyzone/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 les dossiers storage/cache et storage/logs à l'écriture chmod 777.

Configuration

Apache2

<VirtualHost *:8080>
    ServerName 127.0.0.1:8080
    DocumentRoot "/path/to/project/sim/public/"
    <Directory "/path/to/project/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;
    error_log /path/to/example.error.log;
    access_log /path/to/example.access.log;
    root /path/to/project/sim/public;

    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.1-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Docker

Faire fonctionner SIM via docker.

1. Récupérer le dépôt sim-docker :

$ git clone https://github.com/Horyzone/sim-docker.git
$ cd sim-docker

Vous pouvez adapter le fichier docker/php.ini utilisé et le fichier docker-compose.yml à vos besoins, faite attention à ce que les volumes correspondes à votre <projet_name> suivant l'étape 2.

2. Télécharger SIM (ou le projet SIM) :

$ composer create-project horyzone/sim <projet_name>
$ cd <projet_name>
# Ou
$ git clone https://github.com/Horyzone/sim.git <projet_name>
$ cd <projet_name>

3.1. Lancer composer :

$ composer install
# Ou
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php composer-setup.php
$ php -r "unlink('composer-setup.php');"
$ php composer.phar install
# Ou
$ docker run -ti --rm -v $(pwd):/app composer

3.2. Lancer npm et webpack :

Cette étape est necessaire si vous devez compiler votre code javascript et css.

$ npm install
$ npm run webpack

4. Vérifier votre .env :

# Database development
DB_DEV = 'mysql://user:password@localhost:3306/mydb_dev'

# Database production
DB_PROD = 'mysql://user:password@localhost:3306/mydb'

# Environment mode
# ("dev" pour developpement | "prod" pour production)
ENV = "dev"

# Cache twig
CACHE = false

5. Lancer docker-compose :

Retourner dans la racine de sim-docker puis lancer la commande :

$ docker-compose up -d

Arborescence

  • app/src/ dossier de l'application
    • Controllers/ dossier des controllers
    • Entity/ dossier des entités doctrine
    • Middlewares/ dossier des middlewares
    • Views/ dossier des vues twig
  • assets/ dossier pour le développement front-end
  • config/ dossier comportant des fichiers de configuration de l'application
    • translations dossier comportant les traductions utilisés pour twig
    • cli-config.php fichier cli pour les commandes doctrine
    • container.php le container des dépendences
    • middlewares.yml fichier d'appel des middlewares
    • routes.yml fichier des routes
  • public/ dossier public de l'application
  • storage
    • cache/ cache twig de l'application
    • logs/ les logs de monolog
  • tests/ dossier des tests unitaires
  • .env fichier de configuration d'environnement base de données
  • console fichier php des commandes cli
  • webpack.config.js fichier de configuration de webpack