Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais qui fonctionne

à la racine de mon App :

require '../vendor/autoload.php';
$instanceLib = Namespace\ClientBuilder::create();

Ce que je veux

Charger :

$instanceLib

Dans un controller bien précis de mon application,

Ce que je fais qui ne marche pas

    namespace App\Controller\Api;
      class Home extends AppController{
      public function index(){       
        require '../../../vendor/autoload.php';      // le path est ok around        
        $instanceLib = Namespace\ClientBuilder::create();      
      ...       
      }           
    }

je suis un peu perdu avec l'autoload de composer, si vous avez une idée..

Merci à vous !

7 réponses


Salut,

L'autoloader se charge normalement dans ton index.php de telle sorte que les classes soient disponibles partout.

CendFr
Auteur

Salut,
Merci du retour, j'ai testé de mettre L'autoloader dans le index.php en laissant l'appel de la class dans le controller Mais nop...Marche pas...

"Marche pas..." c'est un peu vague comme retour, peux-tu nous préciser l'erreur retournée par PHP stp ?

CendFr
Auteur

une belle erreur 500, je suis un peu dans le noir c'est un nouveau serveur et les erreurs php ne s'affichent pas il faut qu'on le parametre...

Erreur 500 = Internal server error, donc ça peut être n'importe quoi. Tu n'as pas moyen d'afficher les logs erreurs apache ou nginx ?

CendFr
Auteur

Ok, je viens de regarder les logs, et en fait j'ai un Factory qui gere déjà des autoloads, et du coup ya conflit d'autoloader,
il tente de charger /App/Controller/Api/ClientBuilder.php
or qu'il est dans ../vendor/Malib/dossier1/dossier2/ClientBuilder.php

il faudrait que dans mon app je lui dise de ne pas tenter d'autoloader : $instanceLib = Namespace\ClientBuilder::create();
car il l'autoload dans index .php,

je ne vois pas comment faire ca.

CendFr
Auteur

j'ai fais un gris gris, dans mon autoload de App, j'ai bloqué le chargement de la class et comme ca c'est celui de composer qui s'en occupe...
ca fonctionne mais si qq un à plus propore je prends ;) !