2つのインターフェイス(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