Je développe une API REST avec Silex et je suis confronté à un problème concernant le chargement automatique de ma bibliothèque personnalisée. Il semble que l'autoload de Composer ne l'inclut pas, parce que quand je l'inclue moi-même cela fonctionne.Autoload du compositeur n'incluant pas mes espaces de noms personnalisés (Silex)
# The autoload section in composer.json
# Tried with :
# "Oc\\": "src/Oc"
# "Oc\\": "src/"
# "": "src/"
"autoload": {
"psr-4": {
"Oc\\": "src/"
}
}
<?php
// api/index.php <-- public-facing API
require_once __DIR__.'/../vendor/autoload.php';
$app = require __DIR__.'/../src/app.php';
require __DIR__.'/../src/routes.php'; // <--
$app->run();
<?php
// src/routes.php
// When uncommented, it works!
//include('Oc/ParseImport.php');
use Symfony\Component\HttpFoundation\Response;
use Oc\ParseImport;
$app->get('/hello', function() use ($app) {
return new Response(Oc\ParseImport(), 200);
});
<?php
// src/Oc/ParseImport.php
namespace Oc {
function ParseImport() {
return 'foobar!';
}
}
Je cours composer dumpautoload
après chaque manipulation composer.json
, et je ne vois la ligne 'Oc\\' => array($baseDir . '/src/Oc')
(ou tout ce que j'ai essayé) dans vendor/composer/autoload_psr4.php
.
Je n'arrive pas à comprendre ce qui ne va pas.
Quel est le problème exact je pense que vous avez surpondérés votre question avec des étoffes supplémentaires –