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

时间:2012-09-20 08:57:40

标签: php

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

<?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?
        }
    }

?>

4 个答案:

答案 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();
}

这适用于所有方法。