你能在另一个类中实例化一个对象吗?

时间:2014-01-15 06:04:52

标签: php class oop

是否可以在另一个类中声明一个对象?以下代码不断给我一个错误nexpected 'new' (T_NEW)错误。

Class class1{
    public function doSomething(){
        $var = 3;
        return true;    
    }
}

Class class2{

    public $class1 = new class1();

    public function doSomethingElse(){
        if($class1->doSomething() == true){
            return 10;      
        }else{      
            return 13;
        }   
    }
}

//$obj = new class2();

我真的不想通过构造函数传递对象,因为它在其他类中使用,所以我必须多次传递它。有更好的方法吗?

3 个答案:

答案 0 :(得分:2)

使用类的构造函数实例化另一个类。

Class class1
{
    public function doSomething() 
    {
        $var = 3;
        return true;    
    }
}

Class class2
{    
    protected $class1 = null;

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

    public function doSomethingElse() 
    {
        if ($this->class1->doSomething() == true) {
            return 10;      
        } else {      
            return 13;
        }   
    }
}

答案 1 :(得分:1)

是的,但你必须把初始化放在构造方法中。

Class class2{

    public $class1;

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


    // ...
}

答案 2 :(得分:1)

您只能初始化标量值和数组,使用构造函数:

class Class2 {

  public $class1;

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

  ...
}