在php中实例化一个has-a关系

时间:2014-03-13 10:41:33

标签: php class-design

我想知道在php5中是否有可能将对象实例化为类变量?

在我的例子中,变量$ a将是A类的一个实例。 但是当我开展工作时似乎并不可行。

你能告诉我怎样才能建立关系" B类有一个变量,它是A类和#34的实例。 ??

<?php 
class A{
    private $variable1;
    private $variable2;
}   
class B{
    private $variable3;
    private $variable4;
    private $a = new A();
}   
?>

2 个答案:

答案 0 :(得分:2)

在构造函数中初始化赋值。之后创建一个B类实例,你可以立即调用A类中的方法。

仅供参考:变量$a是公开的。


代码......

<?php
class A
{
    private $variable1;
    private $variable2;

    public function show()
    {
        echo "Hi";
    }
}

class B
{
    public $a;
    private $variable3;
    private $variable4;

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

$b = new B;
$b->a->show(); // prints Hi

答案 1 :(得分:2)

您无法在类定义中实例化对象。但是,您可以使用__construct()魔术方法!

class A{
    private $variable1;
    private $variable2;
}   
class B{
    private $variable3;
    private $variable4;
    private $a;

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

在实例化B类(__construct())时执行方法new B()。因此,只要存在B,它就会有一个包含类A

实例的变量