Php 子类和父类属性
我有一个名为Php 子类和父类属性,php,oop,Php,Oop,我有一个名为Parent的类和一个继承Parent类的类Child。Parent类有一个值为testfile的属性filename。在第一步中,我更改此属性的值,例如在Parent类中的另一个testvaluetestFileame方法。然后我尝试从Child类调用方法log,该方法尝试从Parent类获取filename属性 class Parent { public $filename = 'filename'; public function setFilename
Parent
的类和一个继承Parent
类的类Child
。Parent
类有一个值为testfile
的属性filename
。在第一步中,我更改此属性的值,例如在Parent
类中的另一个testvalue
testFileame
方法。然后我尝试从Child
类调用方法log
,该方法尝试从Parent
类获取filename
属性
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");
}
我希望得到另一个测试值,但方法使用的是
testfile
。有人能解释一下发生了什么吗?好吧,你没有设置值。您刚刚定义了一个方法,该方法将在调用时设置值
因此,简而言之,调用方法
setFilename()
,然后值就会改变。好吧,您没有设置值。您刚刚定义了一个方法,该方法将在调用时设置值
因此,简而言之,调用方法
setFilename()
,然后值就会改变。好吧,您没有设置值。您刚刚定义了一个方法,该方法将在调用时设置值
因此,简而言之,调用方法
setFilename()
,然后值就会改变。好吧,您没有设置值。您刚刚定义了一个方法,该方法将在调用时设置值
因此,简而言之,调用方法
setFilename()
,然后值就会改变。我认为您误解了类和实例的概念。
您应该有一个调用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"
这里的更多细节:我认为您误解了类和实例的概念。 您应该有一个调用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"
这里的更多细节:我认为您误解了类和实例的概念。 您应该有一个调用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"
这里的更多细节:我认为您误解了类和实例的概念。 您应该有一个调用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"
此处有更多详细信息:向我们展示一些代码,我们将提供帮助。如果没有代码示例,这样的描述是无用的。向我们展示一些代码,我们将能够提供帮助。如果没有代码示例,这样的描述是无用的。向我们展示一些代码,我们将能够提供帮助。如果没有代码示例,这样的描述是无用的。向我们展示一些代码,我们将能够提供帮助。如果没有代码示例,这样的描述是无用的。但我认为在父类中更改属性值就足以在子类中使用。在从子类调用
log
方法之前调用了setFilename
方法。但我认为更改父类中的属性值就足够在子类中使用了。在从子类调用log
方法之前调用了setFilename
方法。但我认为更改父类中的属性值就足够在子类中使用了。在从子类调用log
方法之前调用了setFilename
方法。但我认为更改父类中的属性值就足够在子类中使用了。以及在从子级调用log
方法之前调用的setFilename
方法。