我需要允許實現兩個接口的類型(Foo
和Bar
),而不是其中之一。使用OptionsResolver組件進行高級類型驗證
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
實例。
我可以重新設計我的類/接口,但它不是設計問題。 那麼,有可能用這個組件實現它嗎?
感謝@MikO的回答,我很欣賞你的建議(+1) – yceruto