更具限制性的子接口

时间:2014-04-15 21:09:42

标签: php inheritance interface

我有一个特殊的用例,我希望子接口对其返回值有约束,而父接口却没有。所以,例如:

interface FooInterface
{
    /**
     * @return mixed
     */
    public function foo();
}

interface IntegerOnlyFooInterface extends FooInterface
{
    /**
     * @return integer
     */
    public function foo();
}

在此示例中,IntegerOnlyFooInterface仅返回对foo()的调用的整数。因为整数也是标量,所以这并不会破坏从FooInterface继承的合同,并且满足Liskov Substitution Principle,因为IntegerOnlyFooInterfaces可以在需要FooInterface的任何地方使用实例没有破坏应用程序中的任何内容。

有些地方我希望强制整数返回值作为代码合同的一部分,所以在那些地方我会输入IntegerOnlyFooInterface

但这似乎很狡猾,而且我想知道我是否以错误的方式处理问题,或者它是否在上升和下降。

0 个答案:

没有答案