Skip to content

Instantly share code, notes, and snippets.

@aliastim
Last active August 15, 2021 09:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aliastim/b2e3d1dc986aee0320a666dcb6ed8bfa to your computer and use it in GitHub Desktop.
Save aliastim/b2e3d1dc986aee0320a666dcb6ed8bfa to your computer and use it in GitHub Desktop.

Créer un nouveau projet avec Composer 🧙‍♂️

Les étapes à suivre :

1️⃣

composer init

Cette commande va nous permettre de créer le fichier racine 'composer.json' Plusieurs informations vont nous être demandées :

  • Le nom du package (vendor/name) : Vendor correspond au nom de votre entreprise, Name correspond au nom de votre librairie (ex : Devu/Developp).
  • La description du package qui permet d'indiquer les informations sur votre projet.
  • Les auteurs du projet.
  • La stabilité minimum des librairies installées au projet (il est recommandé de mettre stable pour indiquer le niveau le plus haut.
  • Le type de package/projet que l'on crée (indiquer project s'il s'agit d'un projet complet ou library s'il a pour objectif d'être appelé dans d'autres projets plus importants.
  • Les dépendances (require et required-dev), elles peuvent être définies plus tard.

Le requirecorrespond aux packages que l'on va ajouter au projet, require dev correspond au packages qui ne seront utilisés qu'en milieu de développement.

2️⃣

Ajouter l'autoloading à composer.json

Sous l'attribut require, ajouter l'attribut autoload en psr-4 comme ceci :

"autoload": {
        "psr-4": {
            "App\\": ""
        }
    }

3️⃣

Installer composer

avec la commande :

composer install

Il ne vous reste plus qu'à installer les librairies nécessaires à votre projet.

⁉️ Plus d'informations avec la Notice Composer

Les packs de base à installer dans un nouveau projet

Installer des librairies externes avec la commande :

composer require {lib} {version}

Désinstaller une librairie externe avec la commande :

composer remove vendor/{lib}

Quelques packs indispensables :

  • "symfony/var-dumper" : Permet de mieux visualiser les processus avec la fonction dump()
  • "doctrine/orm" : Permet d'intéragir avec la base de données
  • "twig/twig" : Permet d'utiliser Twig, le moteur de templates utilisé par Symfony

Quelques packs utiles :

  • "cocur/slugify" : Permet de convertir simplement des chaines de caractères en slugs
  • "swiftmailer/swiftmailer" : Permet d'envoyer un grand nombre de mails plus facilement

Pour mettre à jour un projet

Mettre à jour une librairie en particulier

composer update {lib}

Mettre à jour toutes les librairies (déconseillé)

composer update

Création des fichiers sources

Dans notre exemple, nous allons tout d'abord créer 3 dossiers :

  • Entity : Qui contiendra les classes (User.php, Article.php, etc)
  • Repository : Qui contiendra les repositories des classes
  • template : Qui contiendra les fichiers twig

Nous allons ensuite créer un fichier initialisation.php qui contiendra ceci :

<?php

require __DIR__."/vendor/autoload.php";
$params = require __DIR__."/parameters.php";

use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;
use Twig\Loader\FilesystemLoader;
use Twig\Environment;

$paths = array(__DIR__."/Entity");
$isDevMode = true;
$config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode, null, null, false);
$entityManager = EntityManager::create($params['db'], $config);

$loader = new FilesystemLoader(__DIR__.'/Views');
$twig = new Environment($loader, [
    'cache' => false,
]);


session_start();

Puis le fichier parameters.php qui va nous permettre de nous connecter à la base de données :

<?php

return [
    'db' =>
        [
            'driver'   => 'pdo_mysql',
            'user'     => 'root',
            'password' => '',
            'dbname'   => 'shiatsu78',
        ]
];

et enfin, un fichier cli-config.php :

<?php
use Doctrine\ORM\Tools\Console\ConsoleRunner;

require_once 'initialisation.php';

return ConsoleRunner::createHelperSet($entityManager);

Modèle des controllers

Voilà, tous nos fichiers sources sont prêts, il ne reste plus qu'à démarrer notre projet, nos fichiers php devraient ressembler maintenant à ceci (ex: index.php) :

<?php

require __DIR__ . "/initialisation.php";

echo $twig->render('homepage.html.twig', [
    'title' => 'Mon site web',
    'isConnected' => isset($_SESSION['isConnected']),
]);

Modèle des views

Pour les fichiers twig, je recommande tout d'abord de créer le fichier de base qui comprendra le header, appelons-le donc sobrement base.html.twig :

<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>{{ title|default('Titre par défaut de mon site web') }}</title>
    <link rel="icon" type="image/png" href="favicon.png">
    
    <link rel="stylesheet" href="../src/style.css">
</head>
<body>
{% block body %}

    <header>
        {% block header %}{% endblock %}
    </header>
    <main>
        {% block main %}{% endblock %}
    </main>
    <footer>
        {% block footer %}{% endblock %}
    </footer>
    
{% endblock %}

<script type="text/javascript" src="../src/style.js"></script>
</body>
</html>

Puis les autres fichiers twig étendront ce fichier de base et ressembleront simplement à ceci :

{% extends 'base.html.twig' %}

{% block main %}

    <h1>Titre de ma page</h1>

{% endblock %}

Installation de projets via Github

composer install

*Créer la base de données si nécessaires, puis changer les informations de connexion.

Informations complémentaires

En ligne, le fichier parameters.php sera de la forme :

<?php 

return [
    'db' =>
        [
            'driver'   => 'pdo_mysql',
            'user'     => 'usertc',
            'password' => 'Pas$w0rd',
            'dbname'   => 'usertc',
            'host'     => 'usertc.mysql.db'
        ]
];

Pour mettre à jour sa base de données en ligne de commande :

vendor/bin/doctrine orm:schema-tool:update --dump-sql --force

Pour lancer le serveur local :

php -S localhost:8080
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment