doutui4649 2014-03-14 22:56
浏览 33
已采纳

PHP条件分配 - 接口

Lets say I create and interface

interface IMyInterface {

    function abstractMethod();

}

class MyClass implements IMyInterface {

    function abstractMethod() {
        //code
    }

}

class OtherClass {

    private $IMyInterfaceObj;

    function __construct($obj) {
        $this->IMyInterfaceObj = $obj;
    }

}

What can I do to make sure that the object assigned to $IMyInterfaceObj is an Object that actually implements the interface, since PHP is loosely typed. Should I check the type???

  • 写回答

1条回答 默认 最新

  • douzhao7634 2014-03-14 22:58
    关注

    You would type hint it in the constructor. You cannot do this for basic types such as integers or strings, although you can for arrays with array. The only value you can use to make a parameter an optional one is to use null.

    class OtherClass {
    
        private $IMyInterfaceObj;
    
        function __construct(IMyInterface $obj) {
            $this->IMyInterfaceObj = $obj;
        }
    
    }
    

    Thoroughly reading the documentation on interfaces and type hinting should clear anything else up on the subject.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 速帮,学校需要在外上班没空
  • ¥15 人在外地出差,速帮一点点
  • ¥15 如何使用canvas在图片上进行如下的标注,以下代码不起作用,如何修改
  • ¥15 Windows 系统cmd后提示“加载用户设置时遇到错误”
  • ¥50 vue router 动态路由问题
  • ¥15 关于#.net#的问题:End Function
  • ¥15 无法import pycausal
  • ¥15 VS2022创建MVC framework提示:预安装的程序包具有对缺少的注册表值的引用
  • ¥15 weditor无法连接模拟器Local server not started, start with?
  • ¥20 6-3 String类定义