我有問題讓類自動加載工作在我正在放在一起的Silex框架中。我在另一個項目中工作,但我無法弄清楚我在這裏做錯了什麼。 我的目錄看起來是這樣的:Silex和自動加載控制器類
root
-src
-Controller
-HelloController.php
-app.php
-vendor
-web
-index.php
-composer.json
這裏是我的index.php
<?php
$app = require __DIR__.'/../src/app.php';
$app->run();
app.php
<?php
require_once __DIR__.'/../vendor/autoload.php';
$app = new Silex\Application();
$app['debug'] = true;
$app->get("/hello/{name}", 'App\Controller\HelloController::hello');
return $app;
HelloController.php
<?php
namespace App\Controller;
use Silex\Application;
use Symfony\Component\HttpFoundation\Response;
class HelloController
{
public function hello($name)
{
return new Response('<html><head></head><body><h1>Hello, '.$name.'</h1></body></html>');
}
}
和作曲家。 json
{
"require": {
"silex/silex": "^1.3"
},
"autoload": {
"psr-4": {
"App\\": "/src"
}
}
}
每當我試着在瀏覽器中打開的index.php /你好/世界,我得到這個錯誤:
InvalidArgumentException in ControllerResolver.php line 153:
Class "App\Controller\HelloController" does not exist
您需要註冊'服務eControllerServiceProvider',這個軟件包會自動擴展現有的'resolver'服務,你應該能夠加載你的控制器。 – Artamiel
@Artamiel沒有必要。 'HelloController'不是一項服務。 http://silex.sensiolabs.org/doc/usage.html#controllers-as-classes –
@ absalon.valdes - 絕對正確。這似乎不是那麼明顯的錯誤可能。我測試了提供的代碼,並且按預期工作。 – Artamiel