Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:是否可以调用嵌套对象';嵌套对象中的方法?_Php - Fatal编程技术网

PHP:是否可以调用嵌套对象';嵌套对象中的方法?

PHP:是否可以调用嵌套对象';嵌套对象中的方法?,php,Php,我不知道如何更好地解释这一点,所以(参见第二节课内的评论): 否。对象不仅仅可以访问更高范围内的内容。您需要显式地将main传递到child: $child->child_function($this); 您已经将函数something\u other定义为public,因此您可以在创建主类的对象后访问该函数。试试这个, class main { public function something() { echo("do somethin

我不知道如何更好地解释这一点,所以(参见第二节课内的评论):


否。对象不仅仅可以访问更高范围内的内容。您需要显式地将
main
传递到
child

$child->child_function($this);

您已经将函数
something\u other
定义为public,因此您可以在创建主类的对象后访问该函数。

试试这个,
    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();
        }
    }

?>

您可以使用main扩展子对象。
这允许child通过调用$This->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();
        }
    }

?>

这适用于所有方法。

是的,您可以将
$This
(在
main
中)传递给
子类的构造函数。不过,要小心别吃意大利面!谢谢deceze和Mihai,我用了你的建议,效果很好。
<?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();
        }
    }

?>
public function __construct () {
    parent::__construct();
}