Silex Class 不存在 - 控制器
Silex Class does not exist - Controller
我从 Silex 开始,但我无法 link 我的控制器。我查看了几个示例和帖子,但我阻止了,没有任何效果。
目前我有这个:
在我的index.php
<?php
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
require_once __DIR__.'/../vendor/autoload.php';
$app = new Silex\Application();
$app['debug'] = true;
$app->register(new Silex\Provider\ServiceControllerServiceProvider());
Request::enableHttpMethodParameterOverride();
$app->get("/", "Silex\Controllers\MainController::index");
$app->run();
在我的composer.json
{
"require": {
"silex/silex": "~2.0",
"ddesrosiers/silex-annotation-provider": "dev-master"
},
"autoload": {
"psr-4": {
"Silex\": "silex/"
}
}
}
我的控制器:
<?php
namespace Silex\Controllers;
use Silex\Application;
class MainController implements \Silex\ControllerProviderInterface {
public function index()
{
return new Response('Thank you for your feedback!', 201);
}
}
我不知道它是否重要,但我项目的 url 是 "silex/"。
你能告诉我这段代码有什么问题吗?
谢谢 !
根据您的文件结构,您的 Silex 命名空间路径应为“”
"autoload": {
"psr-4": {
"Silex\": ""
}
}
最好不要使用这个命名空间,因为它被composer安装的silex框架使用。您可以将其重命名为其他名称,例如 App
.
"autoload": {
"psr-4": {
"App\": ""
}
}
...
<?php
namespace App\Controllers;
use Silex\Application;
class MainController implements \Silex\ControllerProviderInterface {
...
$app->get("/", "App\Controllers\MainController::index");
您正在使用 silex 2。一些命名空间已更改。
您应该使用 Silex\Api\ControllerProviderInterface
而不是 \Silex\ControllerProviderInterface
我从 Silex 开始,但我无法 link 我的控制器。我查看了几个示例和帖子,但我阻止了,没有任何效果。
目前我有这个:
在我的index.php
<?php
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
require_once __DIR__.'/../vendor/autoload.php';
$app = new Silex\Application();
$app['debug'] = true;
$app->register(new Silex\Provider\ServiceControllerServiceProvider());
Request::enableHttpMethodParameterOverride();
$app->get("/", "Silex\Controllers\MainController::index");
$app->run();
在我的composer.json
{
"require": {
"silex/silex": "~2.0",
"ddesrosiers/silex-annotation-provider": "dev-master"
},
"autoload": {
"psr-4": {
"Silex\": "silex/"
}
}
}
我的控制器:
<?php
namespace Silex\Controllers;
use Silex\Application;
class MainController implements \Silex\ControllerProviderInterface {
public function index()
{
return new Response('Thank you for your feedback!', 201);
}
}
我不知道它是否重要,但我项目的 url 是 "silex/"。
你能告诉我这段代码有什么问题吗? 谢谢 !
根据您的文件结构,您的 Silex 命名空间路径应为“”
"autoload": {
"psr-4": {
"Silex\": ""
}
}
最好不要使用这个命名空间,因为它被composer安装的silex框架使用。您可以将其重命名为其他名称,例如 App
.
"autoload": {
"psr-4": {
"App\": ""
}
}
...
<?php
namespace App\Controllers;
use Silex\Application;
class MainController implements \Silex\ControllerProviderInterface {
...
$app->get("/", "App\Controllers\MainController::index");
您正在使用 silex 2。一些命名空间已更改。
您应该使用 Silex\Api\ControllerProviderInterface
\Silex\ControllerProviderInterface