【发布时间】:2020-08-10 21:21:51
【问题描述】:
下面是我给出的示例代码
<?php
Class A {
function SelectRecord()
{
$this->DeleteRecord();
echo "class A - SelectRecord ";
}
function DeleteRecord()
{
echo "class A - DeleteRecord ";
}
}
Class B extends a {
function SelectRecord()
{
Parent::SelectRecord();
echo "class B - SelectRecord ";
}
function DeleteRecord()
{
echo "class B - DeleteRecord ";
}
}
$objB = new B();
$objB->SelectRecord();
我得到的输出是
class B - DeleteRecord
class A - SelectRecord
class B - SelectRecord
在 B 类中扩展时,如何在 A 类本身中调用 A 类 DeleteRecord 方法。当我尝试从 A 类调用时,它会调用 B 类 DeleteRecord方法。当我使用 self::DeleteRecord。它工作正常。但是什么时候 $this 和 Self.我应该将 $this 替换为 Self 吗?
【问题讨论】:
-
这能回答你的问题吗? When to use self over $this?
-
我的不是静态函数。那么如何使用Self。我的问题是我使用 $this 来调用。但是当方法名称相同时,它会调用子类函数。我希望调用父类 A 函数。如何做到这一点
-
没错,你的不是静态方法。所以你不使用自我,你使用
$this。如果您想调用父类,请使用parent::method(),就像您在问题中所做的那样。 -
@yivi 当我从 A 类(父类)调用删除记录 $this->DeleteRecord() 时,它调用 B 类(子类)DeleteRecord 函数而不是 A 类。因为我从A类,它应该调用同一个类中的方法。但它调用了派生类函数。如果方法名称相同,就会出现这种混乱。如何解决这个问题。
标签: php class oop inheritance