<?php
class HTML
{
protected $name;
public $id;
private $with;
protected function basicAttribute()
{
return "name='$this->name' id='$this->id'";
}
}
Class HTML_div extends HTML
{
public function __construct($id , $name)
{
$this->id = $id;
$this->name = $name;
}
public function getDiv($content)
{
$basicAttribute = $this->basicAttribute();
echo "<div $basicAttribute >$content</div>";
}
}
$objDiv = new HTML_div("bloc_main" , 'avc');
$objDiv->getDiv('this is and example of inheritance in php');
问题:
如果我将$basicAttribute = $this->basicAttribute();
更改为$basicAttribute = parent::basicAttribute();
,它也有效。所以我想知道它们之间有什么区别?哪个是调用父方法的更好方法?
答案 0 :(得分:2)
在这种情况下,他们做同样的事情。但是,使用$ this-&gt; basicAttribute()通常会更好。 每个电话的作用是:
答案 1 :(得分:0)
这很简单,真的。扩展类时,新类继承该类中的所有属性和方法(属性和方法除private
除外)。扩展的类称为父类,扩展的类称为子类。
所以,如果我们有一个看起来像这样的类:
HTML
basicAttribute()
我们扩展它:
HTML_div extends HTML
basicAttribute() // This method is automatically inherited from HTML
// which means that you do not have to create it yourself
因此,当您从parent::basicAttribute()
致电HTML_div
时,您实际上正在调用HTML
的方法。
我相信这个例子应该以一种易于理解的方式解释它:
class A {
function test() {
echo 'A';
}
}
class B extends A {
function test() {
echo 'B';
}
function parentTest() {
parent::test();
}
}
$b = new B;
$b->test(); // 'B'
$b->parentTest(); // 'A'