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
2.0.3 (2016-08-22)
- fixed lazy evaluation of 'monolog.use_error_handler'
- fixed PHP7 type hint on controllers
如果您只能升级一个补丁版本,问题应该会消失。如果没有,您需要删除控制器上的类型提示。它应该默认为一个字符串,所以你不会失去任何实际功能。
我们使用的是 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
2.0.3 (2016-08-22)
- fixed lazy evaluation of 'monolog.use_error_handler'
- fixed PHP7 type hint on controllers
如果您只能升级一个补丁版本,问题应该会消失。如果没有,您需要删除控制器上的类型提示。它应该默认为一个字符串,所以你不会失去任何实际功能。