加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php包装类中的instanceof错误

发布时间:2020-12-13 16:42:28 所属栏目:PHP教程 来源:网络整理
导读:我开始为预定义的php包编写一个包装类.以下是课程: class phpclass1 :: ping() :: __construct(array $options) :: clear() :: addDoc(phpclass2 $string)...class phpclass2 :: __construct() :: update()... 以下是我为上述2类编写的包装类: class wrapp
我开始为预定义的php包编写一个包装类.以下是课程:
class phpclass1
    :: ping()
    :: __construct(array $options)
    :: clear() 
    :: addDoc(phpclass2 $string)

...

class phpclass2 
    :: __construct()
    :: update()
...

以下是我为上述2类编写的包装类:

class wrapper1 {
    private $conn;

    public function __construct(phpclass1 $object) {
        $this->conn = $object;
    }

    public function add(wrapper2 $document) {
        return $this->conn->addDoc($document);
    }
}

class wrapper2 extends phpclass2 {
    private $doc;
    public function __construct() {
        $this->doc = new phpclass2();
    }    
}

Here's how I'm using them:
$options = array (...);
$object = new phpclass1($options);
$conn = new wrapper1($object);
$doc = new wrapper2();
....
....
$conn->add($doc);

一切正常,直到我使用add函数.它给出一个错误:参数1传递给phpclass1 :: addDoc()必须是一个phpclass2的实例,wrapper2的实例给定

我失踪了什么我已经尝试了许多事情,但完全失去了这里.

你已经定义了
class phpclass1 :: addDoc(phpclass2 $string)

该方法期望参数是phpclass2的对象,但您正在传递

return $this->conn->addDoc($document);

通过

$conn->add($doc);

而$doc是wrapper2的对象,而不是phpclass2

修复添加一个新的公共方法

wrapper2::getDoc()

public function add(wrapper2 $document) {
    return $this->conn->addDoc($document->getDoc());
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读