1 つではなく、 2 つのインターフェイス (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
インスタンスも許可します。
クラス/インターフェースを再設計できますが、設計上の問題ではありません。それで、このコンポーネントでそれを達成することは可能ですか?