Initialisation
Nous allons initialiser notre projet avec composer.
Méthode : composer init
Dans le terminal du dossier racine de votre site tapez :
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.
{
"name": "vincent/site",
"autoload": {
"psr-4": {
"Vincent\\Site\\": "src/"
}
},
"authors": [
{
"name": "Vincent Vanneste",
"email": "vincent.vanneste@monmail.com"
}
],
"require": {}
}
Méthode : composer.json
Dans le fichier composer.json seul l'autoload est important pour le moment
"autoload": {
"psr-4": {
"Vincent\\Site\\": "src/"
}
},
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
"autoload": {
"psr-4": {
"App\\": "app/"
}
},
Attention : dump-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 :
composer dump-autoload
Vous pouvez vérifier les modifications apportées au fichier vendor/composer/autoload_psr4.php
return array(
'App\\' => array($baseDir . '/app'),
);
Exemple : Testez
Nous allons tester la création d'une classe et son instanciation
Ajoutez un fichier Exemple.php dans le dossier app :
namespace App;
class Exemple
{
protected $data;
public function __construct($data)
{
$this->data = $data;
}
}
Nous instancions la classe dans le fichier index.php de la racine :
require_once join(DIRECTORY_SEPARATOR, [__DIR__, 'vendor', 'autoload.php']);
$mon_exemple = new App\Exemple('test');
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 :
php -S localhost:8000
Ouvrez votre navigateur et tapez l'url http://localhost:8000/
Vous devriez voir dans votre navigateur :
object(App\Exemple)#3 (1) { ["data":protected]=> string(4) "test" }