2014-01-15 117 views
0

是否有可能在另一個類中聲明一個對象?以下代碼不斷給我一個錯誤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(); 

我真的不希望想通過一個構造函數的對象傳遞,因爲它是其他類中使用,所以我不得不通過多次傳遞。有更好的方法嗎?

+1

你不能」初始化類屬性與任何在運行時被解析(如一個新的對象,調用一個方法, 等等) –

回答

1

使用你的類的構造函數來實例化另一個類。

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

是的,但你必須把施工方法的初始化。

Class class2{ 

    public $class1; 

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


    // ... 
} 
1

只能初始化標量值和數組,使用構造函數:

class Class2 { 

    public $class1; 

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

    ... 
} 
相關問題