我开始为预定义的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()); }