2016-04-21 12 views
0

Ich habe eine benutzerdefinierte Controller-Provider-Klasse, die gut funktioniert. Ich habe versucht, eine zweite Zugabe, und es hält nur sagen:Benutzerdefinierte ControllerProvider-Klasse nicht gefunden

Fatal error: Class 'Bar\BarControllerProvider' not found in C:\xampp\htdocs\foobar\src\app.php on line 18

ich habe es eingestellt auf die gleiche Weise wie die erste oben, mit

namespace Bar; 

... 

class BarControllerProvider implements ControllerProviderInterface { 
    public function connect(Application $app) { 
     ... 
     $controllers = $app['controllers_factory']; 

     $controllers->get('/', function() use ($app) { 
      ... 
     }); 

     ... 

     return $controllers; 
    } 
} 

Und der Autoloader eingerichtet in Komponist:

{ 
    "require": { 
     "silex/silex": "~1.3", 
     "doctrine/dbal": "~2.2", 
     "symfony/security": "^3.0" 
    }, 
    "autoload" : { 
     "psr-0": { 
      "Foo": "/src/Foo", 
      "Bar": "/src/Bar" 
     } 
    } 
} 

Datei-Verzeichnis sieht wie folgt aus:

-config (bunch of stuff in here) 
-src 
    |-Foo 
    | |-FooControllerProvider.php 
    |-Bar 
    | |-BarControllerProvider.php 
    |-app.php 
-vendor (bunch of stuff in here) 
-web (bunch of stuff in here) 
-composer.json 
-composer.lock 

app.php hat diese:

$app->mount("/foos", new Foo\FooControllerProvider()); 
$app->mount("/bars", new Bar\BarControllerProvider()); 

Ich habe die gesamten Anbieter-Ordner tatsächlich gelöscht und habe ein frischer Komponisten installieren und das hat keinen Unterschied machen.

Wenn ich die Bars mount, kommen foos gut. Warum kann es den BarControllerProvider nicht finden?

+0

der Komponist [docs] (https://getcomposer.org/doc/04-schema.md#psr-0) Erwähnen Sie, dass Sie t o Beenden Sie jede Namespace-Deklaration mit '\\\'. Versuche das zu tun. – nVitius

Antwort

3

Ich glaube, Sie nicht andere Zuordnung für den gleichen Ordner definiert brauchen, und ich schlage vor, Sie den PSR-4 automatischen Laden zu verwenden, anstatt des PSR-0 autoloading, wie here im doc beschrieben:

PSR-4 is the recommended way though since it offers greater ease of use (no need to regenerate the autoloader when you add classes).

einfach versuchen, den Ordner src wie folgt zuzuordnen:

{ 
    "autoload": { 
     "psr-4": { "": "src/" } 
    } 
} 

Hope this Hilfe