class a
{
function __construct()
{
$x = new b();
$x->myFunction();
}
}
class b extends a
{
public function myFunction()
{
echo 'Here is myFunction';
}
}
$a = new a();
现在我想知道如何从类a访问类b的函数myFunction并避免无限循环。
答案 0 :(得分:0)
您可以使用$ this来访问子方法
Class a{
function call_child_method(){
if(method_exists($this, 'myFunction')){
$this->myFunction();
}
}
}
Class b extends a{
function myFunction(){
echo 'Here is myFunction';
}
}
$test = new b();
$test->call_child_method();
您将获得输出“这是myFunction”。
答案 1 :(得分:0)
如评论中所述,您要做的是Abstract父类。因此,您可以从其父母那里调用子课程。
正如评论所建议的那样,this question/answer提供了一系列有关如何完成任务的示例,如下所示。
abstract class a {
function __construct() {
$this->myFunction();
}
}
class b extends a {
function myFunction() {
echo 'im from class b, sweet.';
}
}
abstract
)类:定义为abstract的类可能无法实例化 Source
这绝不是你应该如何打电话/做你想做的事情。如果您能告诉我们您通过这样做会尝试实现的任务,我们可以为您提供进一步的帮助。否则,您将不断编写不打算工作的代码,只能这样做,因为"解决方法" 。
答案 2 :(得分:0)
您应该在这里使用abstract课程。
abstract class a{ // define abstract class a
// parent class constructor
function __construct(){
// some code here
}
function test(){
$this->myFunction();
}
// define abstract method myFunction
abstract function myFunction();
}
class b extends a{
// child class constructor calls parent class constructor
function __construct(){
parent::__construct();
}
// this method will be called
function myFunction(){
echo 'Here is myFunction';
}
}
$b = new b; // create object of child class
$b->test();