我需要允许实现两个接口(Foo
和Bar
)的类型,而不是其中之一。
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']);
错误的!也允许Foz
和Baz
实例。
我需要允许类型的子类Bar
,而不是Bar
实例。
class Bar {};
class Foobar extends Bar {};
class FoobarBaz extends Foobar {};
$resolver = new OptionsResolver();
$resolver->setRequired('data');
$resolver->setAllowedTypes('data', ['Bar']);
错误的!也允许Bar
实例。
我可以重新设计我的类/接口,但这不是设计问题。那么,有没有可能用这个组件来实现呢?