2014-01-15 6 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(); 
    } 

    ... 
} 
Смежные вопросы