从另一个类函数获取属性?

时间:2016-12-30 23:45:47

标签: php

<?php
    //file classA.php
    class A {

        private $B;
        public $data;

        public function __construct(){
            $this->B = new B();
        }

        public function readA(){            
            $this->data = $this->B->readB();
            print $this->data;
        }

        public function sendB(){
            return "WORD";
        }
    }

    //file classB.php
    class B {

        private $A;

        public function __construct(){
            $this->A = new A();
        }

        public function readB(){
            return $this->A->sendB();
        }
    }   

require_once .... classA.php
requier_once .... classB.php

$classA = new A();
$classA->readA();

我想使用具有多种依赖性的类。

不能使用实例方法或扩展类。

如何获取函数结果并将其从另一个函数发送回同一个类?

1 个答案:

答案 0 :(得分:1)

你的问题是一个无限循环的对象创建:
当你创建A类时,它将创建一个B类对象,它将再次创建另一个A类对象,它将创建一个B类对象,.... - &GT;内存错误

因此,如果你在A级$this->B = new B();中摆脱__construct(),那么它将适应这种变化:

你有:

    // in class B
    public function readB(){
        return $this->sendB();
    }
    // it needs to be:
    public function readB(){
        return $this->A->sendB();
    }

完整的工作代码:

编辑:现在在A类中使用readA(),但是在构造函数中创建了B类。

<?php
class A {

    private $B;
    public $data;

    public function __construct(){
        //  $this->B = new B();
    }
    public function readA(){   
        $this->B = new B();
        $this->data = $this->B->readB();
        print $this->data;
    }
    public function sendB(){
        return "WORD";
    }
}

//file classB.php
class B {

    private $A;

    public function __construct(){
        $this->A = new A();
    }

    public function readB(){
        return $this->A->sendB();
    }
}   

$B = new B();
echo $B->readB();
$A = new A();
echo $A->readA();

?>