Bonjour à tous,

alors je suis en train de découvrir CakePHP 3 avec toutes ses nouveautés :) Je me heurte à un petit soucis, c'est que je souhaiterai ajouter une librairie perso. Dans CakePHP 2 il suffisait de le mettre sous Lib et de l'importer. Ici c'est un peu plus complexe, il faut utiliser composer.

Ma réelle question est-ce que je mets ma class à la racine de /vendors ? ou bien si je créé un sous répertoire ? Et aussi j'aimerai savoir si c'est propre d'utiliser des classes de Cake à l’intérieur de ma classe, style TableRegistry ... ?

Merci d'avance :)
Bye

2 réponses


antograssiot
Réponse acceptée

Salut, en fait tu fais un peu comme tu veux...

Je vais perndre un exemple, mettons que tu veuilles toujours utiliser le dossier "lib".

Il suffit de faire un fichier lib\MyClass.php

<?php
namespace Lib;
use Cake\ORM\TableRegistry;
class MaClass {
    public function __construct() {
        $table = new TableRegistry();
        die('test');
    }
}

puis dans ton controller :

<?php
namespace App\Controller;
use App\Controller\AppController;
use \Lib\MaClass;
class TestsController extends AppController {
    public function index() {
        $class = new MaClass();
    }
}

et dans composer.json

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

Tu lance un petit "composer dump-autoload" et c'est parti.
Tu peux aussi faire plus simple et mettre ton dossier dans vendor ou dans source est utiliser le namespace App...bref tu fais un peu comme tu veux.

Salut,

super !! merci beaucoup, je vais partir dans cette direction et faire des tests.
J’essaierai de faire un petit retour :)

Merci encore :)