使用php中的属性从子对象访问父方法?

时间:2016-03-18 17:28:46

标签: php class

我有以下PHP课程:

class a {
    public function vw($xc) {
        return $xc;
    }
}

class b extends a {
    public function wv() {
        echo vw() . 'from b via wv';
    }
}

$d = new a;
echo $d->vw('this is a');
$c = new b;
echo $c->vw('this is a from b via a');
$c->wv();

我得到的输出是:

   this is a

为什么我没有获得echo $c->vw('this is a from b via a');c->wv();的输出?

3 个答案:

答案 0 :(得分:2)

您可以通过parent::访问父亲的方法,例如parent::vw()。但是类vw的方法a需要一个参数,因此这段代码片段根本不起作用。但是你应该想到使用父关键字。

class a {
    public function vw($xc) {
        return $xc;
    }
}

class b extends a {
    public function wv() {
        echo parent::vw() . 'from b via wv';
    }
}

$d = new a;
echo $d->vw('this is a');
$c = new b;
echo $c->vw('this is a from b via a');
$c->wv();

http://php.net/manual/en/keyword.parent.php

https://3v4l.org/0MkQI

答案 1 :(得分:0)

在“b”类中,你应该将函数vw写为:

   public  function wv(){
     echo $this->vw() . "from b via wv\n";
   }

此外,在你的最后一行中,$ c-> wv()的调用缺少一个参数: $ c-> wv(“我是一个缺失的参数”);

答案 2 :(得分:0)

试试这个

        class a { 
            public tt;

               public function vw($xc){
                   $this->tt = $xc;
            return $this->tt;
        }
}

class b extends a
{
   public function(){
   return $this->tt. 'from b via wv'
}
}