php:调用父方法时出现问题
在这种情况下,他们也会做同样的事情。但是,通常最好使用$this->basicAttribute()。 这些电话中的每一个都是这样做的:php:调用父方法时出现问题,php,Php,在这种情况下,他们也会做同样的事情。但是,通常最好使用$this->basicAttribute()。 这些电话中的每一个都是这样做的: $this->basicAttribute()--调用basicAttribute()的子实现(如果存在),否则会查找最接近的祖先以查找实现(在这种情况下,只有父级和子级,因此它会调用父级) parent::basicAttribute()--调用最近祖先的实现(在本例中,再次调用父级)。这将忽略子类中basicAttribute()的实现,因此建议仅在重写父
其实很简单。扩展类时,新类将继承该类的所有属性和方法(属于
私有的属性和方法除外)。被扩展的类称为父类,被扩展的类称为子类
所以,如果我们有一个类似这样的类:
<?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');
我们将其扩展为:
HTML
basicAttribute()
因此,当您从HTML\u div
调用parent::basicAttribute()
时,实际上是在调用HTML
的方法
我相信这个例子应该用一种容易理解的方式来解释:
HTML_div extends HTML
basicAttribute() // This method is automatically inherited from HTML
// which means that you do not have to create it yourself
如果子类HTML\u div
未重写父类“basicAttribute()
方法,则它们是等效的。但是,如果子类重写该方法,则直接调用父类将不会执行被重写的子方法执行的任何不同操作。
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'