Php 从另一个类中访问主类中的完整对象数据集

Php 从另一个类中访问主类中的完整对象数据集,php,Php,我已经到处寻找解决这个问题的方法,但一点运气都没有,所以我把帖子作为最后的手段,希望有人能帮助我 class Main { private $data = array(); private $a; private $b; function __contruct() { } public function a() { if (!is_object($this->a)) {

我已经到处寻找解决这个问题的方法,但一点运气都没有,所以我把帖子作为最后的手段,希望有人能帮助我


class Main
{
    private $data = array();

    private $a;
    private $b;

    function __contruct()
    {
    }

    public function a()
    {
        if (!is_object($this->a))
        {
            $this->a = new A();
        }

        return $this->a;

    }

    public function b()
    {
        if (!is_object($this->b))
        {
            $this->b = new B();
        }

        return $this->b;

    }

    protected function set_data($value)
    {
        $this->data = $value;
    }
}

class A extends Main
{
    function __contrust()
    {
        parent::_construct();
    }

    public function test($value)
    {
        $this->set_data($value);

        return $this;
    }
}

class B extends Main
{
    function __contrust()
    {
        parent::_construct();
    }

    public function test($value)
    {
        $this->set_data($value);

        return $this;
    }

    public function get_data()
    {
        print_r($this->a);
    }
}

$m = new Main();
$m->a()->test('add A class data');
$m->b()->test('add B class data');
$m->b()->get_data(); // want to use class A object data here
编辑

我在main类中有一个方法,它可以找到我要查找的name键并返回它的索引,这样我就可以从它的调用类中操作它的数据。但是,类B需要能够将自己的数据设置回数据数组,并获取类a对象数据,以便我可以操作其数据

所以你可以看到,在我实例化主类并启动一个类之后,我希望能够在我的B类中使用A的对象数据

非常感谢您的帮助

谢谢


Darren

这是您可能需要的代码:

class Main
    {
        private $data = array();

        protected $a;
        protected $b;

        function __construct()
        {
        }

        public function a()
        {
            if (!is_object($this->a))
            {
                $this->a = new A();
            }

            return $this->a;

        }

        public function b()
        {
            if (!is_object($this->b))
            {
                $this->b = new B();
            }

            return $this->b;

        }

        protected function set_data($value,$object)
        {
            $object->data = $value;
        }
    }

    class A extends Main
    {
        function __contruct()
        {
            parent::_construct();
        }

        public function test($value,$object)
        {
            $this->set_data($value,$object);

            return $this;
        }
    }

    class B extends Main
    {
        function __contruct()
        {
            parent::_construct();
        }

        public function test($value,$object)
        {
            $this->set_data($value,$object);

            return $this;
        }

        public function get_data()
        {
            print_r($this);
        }
    }

    $m = new Main();
    $m->a()->test('add A class data',$m->b());
    $m->b()->test('add B class data',$m->a());
    $m->b()->get_data(); // want to use class A object data here
这就是输出:

B Object
(
    [data:private] => add A class data
    [a:protected] =>
    [b:protected] =>
)

希望你能更容易地解释你想用它实现什么,即为什么你认为你需要它,而不是我们来解释它有什么问题;-)嗨,沃克。。。我会尽力解释:)基本上我有一个设置/获取数据的主类,然后有7个左右的类扩展,每个类都将自己的各种数据设置回主类。现在,其中一个类为它在主数据数组中创建的每个数据添加了一个名称键。因此,我需要能够从另一个类访问此名称键,以便可以更新/向“its”数组添加更多元素。不确定这是否有意义,否则我可以编辑主帖子并提供更多信息?您好,K102,谢谢,但不完全是我想要的,因为对象A和B中的数据被颠倒了,这也意味着所有方法链接都必须传递对象参数$m->b()->test('addb class data',$m->a())->method('abc',$m->a())->method1('cde',$m->a());这是不实际的。。。不过,我很感激你的回应
B Object
(
    [data:private] => add A class data
    [a:protected] =>
    [b:protected] =>
)