标签: options-resolver

使用OptionsResolver组件进行高级类型验证

我需要允许类型实现两个接口(FooBar),而不是其中之一.

interface Foo {};
interface Bar {};

class Foz implements Foo {};
class Baz implements Bar {};
class Foobar implements Foo, Bar {};

$resolver = new OptionsResolver();
$resolver->setRequired('data');
$resolver->setAllowedTypes('data', ['Foo', 'Bar']);
Run Code Online (Sandbox Code Playgroud)

错误!允许FozBaz实例.


我需要允许类型的子类Bar,而不是Bar实例.

class Bar {};
class Foobar extends Bar {};
class FoobarBaz extends Foobar {};

$resolver = new OptionsResolver();
$resolver->setRequired('data');
$resolver->setAllowedTypes('data', ['Bar']);
Run Code Online (Sandbox Code Playgroud)

错误!也允许Bar实例.


我可以重新设计我的类/接口,但这不是设计问题.那么,用这个组件可以实现吗?

php symfony symfony-components options-resolver

5
推荐指数
1
解决办法
637
查看次数