doumao1047 2014-01-21 10:18
浏览 18
已采纳

需要方法参数的接口

Let's say I have class:

class Foo implements FooInterface{

   private $a=2;

   //implements sum from interface
   public function sum(){
      return $a+$a;
   }
}

Now I have another class:

class Bar{

    private $foo;

    public function __construct($foo){
        $this->foo = $foo;
    }
}

PHP let's us force object type while calling methods:

function abc(Xyz $xyz){}

Does it supports forcing interfaces? Can I force constructor of Bar to accept only objects that implement FooInterface?

  • 写回答

1条回答 默认 最新

  • dpqy77560 2014-01-21 10:21
    关注

    Yes. And it works just like you think it does.

    class Foo implements FooInterface {}
    
    class Bar{
        public function __construct(FooInterface $foo) {}
    }
    

    Also Note:

    • It isn't called "forcing", it's called type-hinting. Here's the Manual Entry
    • Type-hinting works with concrete classes (hint for Foo), classes that extend another class (Foo extends Baz, hinting for Baz will allow for Foo), and interfaces.
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计