我不知道如何更好地解释这一点,所以(见第二课内的评论):
<?php
class main {
public function something() {
echo("do something");
}
public function something_else() {
$child=new child();
$child->child_function();
}
}
class child {
public function child_function() {
echo("child function");
//is it possible to call main->something() here somehow if this class is initiated inside class main?
}
}
?>
答案 0 :(得分:3)
没有。对象不仅可以访问更高范围内的东西。您需要明确地将main
传递给child
:
$child->child_function($this);
答案 1 :(得分:0)
您已将函数something_else
定义为公共,因此您可以在创建主类的对象后访问它。
答案 2 :(得分:0)
试试这个,
class main {
public function something() {
echo("do something");
}
public function something_else() {
$child=new child($this);
$child->child_function();
}
}
class child {
protected $_main;
public function __construct($main)
{$this->_main = $main;}
public function child_function() {
echo("child function");
$this->_main->something();
}
}
?>
答案 3 :(得分:0)
您可以使用main扩展您的子对象 这允许子类通过调用 $ this-&gt; something(); 来访问父类,因为它成为主类的成员,并获得对其所有属性和方法的访问权。
<?php
class main {
public function something() {
echo("do something");
}
}
class child extends main {
public function child_function() {
echo("child function");
//is it possible to call main->something() here somehow if this class is initiated inside class main?
$this->something();
}
}
?>
如果你想要__construct(),你可以这样做:
public function __construct () {
parent::__construct();
}
这适用于所有方法。