Nic*_*unt 1 php oop variable-types
我有两节课:
class BaseResource {
public $url;
protected $relativeUrl;
protected $parentUrl;
public function BaseResource($relUrl, $parentUrl) {
$this->relativeUrl = $relUrl;
$this->parentUrl = $parentUrl;
$this->url = url_to_absolute($parentUrl, $relUrl);
}
}
class XMLResource extends BaseResource {
private $xml;
public function XMLResource($relUrl, $parentUrl, $xml) {
parent::BaseResource($relUrl, $parentUrl);
$this->$xml = $xml;
}
}
Run Code Online (Sandbox Code Playgroud)
这都是非常简单的东西,但是当我执行以下代码时,我收到一个错误.
$relUrl = "../something.html";
$parentUrl = "http://example.com/test/index.php";
$xml = new DOMDocument();
$xmlRes = new XMLResource($relUrl, $parentUrl, $xml);
Run Code Online (Sandbox Code Playgroud)
可捕获的致命错误:类DOMDocument的对象无法转换为字符串
为什么假设它XMLResource::xml是一个字符串?我还没有使用它所以我认为它是未定义的,直到它被设置然后它采取任何设置的类型?
这不是那么容易发现,你是在正确的方向:
$this->$xml = $xml;
Run Code Online (Sandbox Code Playgroud)
但你必须只看这个部分:
$this->$xml
Run Code Online (Sandbox Code Playgroud)
改为:
$this->xml = $xml;
Run Code Online (Sandbox Code Playgroud)
背景:PHP尝试使用$xml作为文字变量名称的内容,这在您的情况下不起作用,因为它需要一个字符串并且您提供一个对象(没有__toString()方法).
该功能称为变量变量文档.