簡體   English   中英

從另一個類訪問主對象的完整對象數據集

[英]access full object data set from within another class into the main class

我一直在尋找高低兩難的解決方案,因此沒有任何運氣,因此我作為最后的手段發帖,希望有人可以幫助我。


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

編輯


[a:private] => A Object
        (
            [data:private] => Array
                (
                    [0] => Array
                        (
                            [name] => foo
                            [data] => 65
                        )
                    [1] => Array
                        (
                            [name] => bar
                            [data] => 65
                        )
                )

            [a:private] => 
            [b:private] => 
        )

我在主類中有一個方法,該方法可以找到要查找的名稱鍵,並返回其索引,這樣我就可以操縱其數據,該數據可以從其調用類正常工作。 但是,B類需要能夠將其自身的數據設置回數據數組,並擁有A類對象數據,以便我可以操縱其數據。

因此,正如您在實例化主類並觸發A類之后所看到的,我希望能夠在我的B類中使用A的對象數據...

將不勝感激任何可能的幫助。

謝謝,

達倫

那就是你可能想要的代碼:

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] =>
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM