CakePhp 3 : Espaces de noms (namespace) et Classes (class) personnelles

Intégrer proprement une class PHP personnelle dans un projet CakePHP 3 avec les espaces de noms PHP5

Les namespaces sont disponibles depuis PHP 5.3.
Ils permettent d’encapsuler des éléments et donc de différencier les classes dans un projet.

Voici la méthodologie pour gérer des classes personnelles dans CakePHP 3…

1) Ajouter un répertoire « Lib » dans le « src » du projet

Rien de spécial : créer un répertoire dans le src du projet CakePhp 3...

2) Ajouter une classe PHP dans « Lib » avec l’espace de nom qui va bien !

Il faut ajouter dans le fichier de class un namespace pour contraindre la class dans un espace spécifique : « namespace Lib »;

Nom du fichier : MyClass.php

namespace Lib;
class MyClass {
    public function __construct() {
        die('test');    
    }
}

3) Déclarer le nom dans l’autoload de composer.json

Charger la classe automatiquement dans le projet…

"autoload": {
    "psr-4": {
        "App\\": "src",
        "Lib\\": "src/Lib"
    }
},

4) Utiliser la classe dans un contrôleur

Préciser que l’on veux utiliser une classe spécifique en précisant l’espace dans lequel la trouver : « use Lib\MyClass »

use Lib\MyClass;
class TestController extends AppController{
    public function index() {
        $class = new MyClass();
    }
}

5) Lancer une mise à jour des fichiers d’autoload

Lancer la commande depuis le dossier du projet :

composer.phar dump-autoload

Comments are closed.