Silex Problems with PHP 5.3.2?


Silex Problems with PHP 5.3.2?

我尝试了Silex的例子,并将我的控制器放在一个单独的目录和类中。

不,控制器方法将获取默认传递的RequestApplication对象。这适用于我的开发机器,它有5.3.14,而不是默认的Ubuntu 5.3.2。它给了我:

PHP可捕获的致命错误:参数1传递给Sv'Controller'Index:: Index()必须是Symfony'Component'HttpFoundation'Request的一个实例,没有给出,在/site/include/app/bootstrap.php第23行调用,在/site/include/app/Sv/Controller/Index. PHP第46行定义

这是我的bootstrap PHP:

<?php
require_once __DIR__ . '/../vendor/autoload.php';
use Sv'Repository'PostRepository;
use Sv'Controller;
$app = new Silex'Application();
// define global service for db access
$app['posts.repository'] = $app->share( function () {
    return new Sv'Repository'PostRepository;
});
// register controller as a service
$app->register(new Silex'Provider'ServiceControllerServiceProvider());
$app['default.controller'] = $app->share(function () use ($app) {
    return new Controller'Index();
});
$app['service.controller'] = $app->share(function () use ($app) {
    return new Controller'Service($app['posts.repository']);
});
// define routes
$app->get('/', 'default.controller:index');
$app->get('/next', 'default.controller:next');
$service = $app['controllers_factory'];
$service->get('/', "service.controller:indexJsonAction");
// mount routes
$app->mount('/service', $service);
// definitions
$app->run();

控制器代码:

namespace Sv'Controller;
use Silex'Application;
use Symfony'Component'HttpFoundation'Request;
class Index
{
    public function index(Request $request, Application $app)
    {
        return 'Route /index reached';
    }
    public function next(Request $request, Application $app)
    {
        return 'Route /next reached';
    }
}

为什么不工作?

我希望这不是同样的问题,阻止我使用ZF2在PHP 5.3.2…

Silex需要PHP 5.3.3,你可以看到他们的composer.json:

"require": {
    "php": ">=5.3.3",
    ...

在README文件中也有说明:

Silex适用于PHP 5.3.3或更高版本

这是由于Symfony2不再支持PHP 5.3.2。