Silex:将字符串定义为路由参数的类型提示,它显示字符串不存在

Silex: Defining string as type hint for route parameter it shows string not exist

我们使用的是 Silex,版本 2.0.2 和 PHP 7.0.1。

其中一个路由传递了一个参数,如下:

test:
    path:     /auth/{token}
    defaults: { _controller: 'Dummy\Controller::getToken' }
    methods: [GET]
    requirements:
        token: \w+

但是当将控制器方法的类型提示作为字符串时

public function getToken (Application $ app, Request $ request, string $token)

出现以下错误:

Class string does not exist and could not be loaded in vendor/silex/silex/src/Silex/AppArgumentValueResolver.php: 37

是否无法设置通过路由配置注入的参数类型?

谢谢。

考虑到您使用的是 2.0.2 版,这可能有点烦人,但在 2.0.3 版中已通过以下修复解决了这个问题:https://github.com/silexphp/Silex/issues/1389

来自the changelog

2.0.3 (2016-08-22)
- fixed lazy evaluation of 'monolog.use_error_handler'
- fixed PHP7 type hint on controllers

如果您只能升级一个补丁版本,问题应该会消失。如果没有,您需要删除控制器上的类型提示。它应该默认为一个字符串,所以你不会失去任何实际功能。