子级和父级属性

时间:2014-01-15 08:15:50

标签: php oop

我有一个名为Parent的类和一个继承Child类的类ParentParent类的属性filename的值为{{ 1}}。在第一步中,我更改了此属性的值,例如testfileanothertestvalue方法中的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。有人可以解释会发生什么吗?

2 个答案:

答案 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"

此处有更多详情:http://www.php.net/manual/en/language.oop5.php

答案 1 :(得分:0)

嗯,你没有设定价值。您刚刚定义了一个方法,该方法将设置值 if

简而言之,调用方法setFilename()然后值会改变。