Initialisation

Nous allons initialiser notre projet avec composer.

Méthodecomposer init

Dans le terminal du dossier racine de votre site tapez :

1
composer init

Validez toutes les questions

Un dossier vendor a été ajouté à votre dossier. Il contient l'autoload et composer.

Le dossier src permettra d'ajouter nos propres classes.

Le fichier composer.json permet de faire le lien entre notre site et d'éventuelles mises à jour.

1
{
2
    "name": "vincent/site",
3
    "autoload": {
4
        "psr-4": {
5
            "Vincent\\Site\\": "src/"
6
        }
7
    },
8
    "authors": [
9
        {
10
            "name": "Vincent Vanneste",
11
            "email": "vincent.vanneste@monmail.com"
12
        }
13
    ],
14
    "require": {}
15
}
16

Méthodecomposer.json

Dans le fichier composer.json seul l'autoload est important pour le moment

1
 "autoload": {
2
        "psr-4": {
3
            "Vincent\\Site\\": "src/"
4
        }
5
    },

Composer nous propose d'installer nos classes dans un dossier src et de les placer dans le namespace Vincent\Site.

Pour simplifier, nous allons appeler notre espace de nom App\ et le dossier source app (renommez le dossier src en app dans votre site).

Modifiez votre composer.json

1
    "autoload": {
2
        "psr-4": {
3
            "App\\": "app/"
4
        }
5
    },

Attentiondump-autoload

Attention, à chaque modification de votre composer.json, vous devez mettre à jour l'autoload de composer.

Dans un terminal du dossier racine (celui qui contient le dossier vendor) lancez la commande :

1
composer dump-autoload

Vous pouvez vérifier les modifications apportées au fichier vendor/composer/autoload_psr4.php

1
return array(
2
    'App\\' => array($baseDir . '/app'),
3
);

ExempleTestez

Nous allons tester la création d'une classe et son instanciation

Ajoutez un fichier Exemple.php dans le dossier app :

1
<?php
2
namespace App;
3
4
class Exemple
5
{
6
    protected $data;
7
    public function __construct($data)
8
    {
9
        $this->data = $data; 
10
    }
11
}

Nous instancions la classe dans le fichier index.php de la racine :

1
<?php
2
require_once join(DIRECTORY_SEPARATOR, [__DIR__, 'vendor', 'autoload.php']);
3
4
$mon_exemple = new App\Exemple('test');
5
6
var_dump($mon_exemple);

require_once join(DIRECTORY_SEPARATOR, [__DIR__, 'vendor', 'autoload.php']) : charge l'autoload.

DIRECTORY_SEPARATOR : caractère de séparation des dossiers. \ ou / en fonction du serveur.

__DIR__ : répertoire du fichier courant.

join(DIRECTORY_SEPARATOR, [__DIR__, 'vendor', 'autoload.php']) : génère l'url du fichier d'autoload en concaténant les dossiers avec un caractère de séparation de dossier.

Si le serveur PHP n'est pas ouvert, ouvrez un terminal dans le dossier racine de votre site, tapez :

1
php -S localhost:8000

Ouvrez votre navigateur et tapez l'url http://localhost:8000/

Vous devriez voir dans votre navigateur :

1
object(App\Exemple)#3 (1) { ["data":protected]=> string(4) "test" }