我有一个名为Parent
的类和一个继承Child
类的类Parent
。Parent
类的属性filename
的值为{{ 1}}。在第一步中,我更改了此属性的值,例如testfile
类anothertestvalue
方法中的Parent
。然后我尝试从testFileame
调用方法log
{1}}类和此方法尝试从Child
类获取filename
属性。
Parent
我希望获得class Parent {
public $filename = 'filename';
public function setFilename() {
$this->filename = 'anotherfilename'
}
public function log($message, $this->filename) {
//here filename from Child class has value 'filename' but I expect 'anotherfilename'
}
}
class Child extends Parent {
$this->log("somemessage");
}
值但方法使用anothertestvalue
。有人可以解释会发生什么吗?
答案 0 :(得分:3)
我认为你误解了CLASS和INSTANCE的概念。 您应该有一个Child类的实例,它调用setFilename。
class MyParent {
private $filename = 'filename';
public function setFilename($name) {
$this->filename = $name;
}
public function log($message) {
//here filename from Child class has value 'filename' but I expect 'anotherfilename'
print $this->filename;
}
}
class MyChild extends MyParent {
//...
}
$child = new MyChild();
$child->setFilename("anotherfilename");
$child->log("somemessage"); // print "anotherfilename"
答案 1 :(得分:0)
嗯,你没有设定价值。您刚刚定义了一个方法,该方法将设置值 if 。
简而言之,调用方法setFilename()
然后值会改变。