php包装类中的instanceof错误

前端之家收集整理的这篇文章主要介绍了php包装类中的instanceof错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我开始为预定义的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());
}

猜你在找的PHP相关文章