2013-12-17 3 views
0

Могу ли я создать новый объект внутри класса?PHP: Создать новый объект этого класса в классе, правильно?

Правильно ли это и стандартный php?

<?php 

class cronjob{ 
    private $k1, $m1; 

    public function check_ready_to_moves(){ 

     $move_arr = array(
      array(
       'k1'=>'5', 
       'm1'=>'8', 
      ), 
      array(
       'k1'=>'6', 
       'm1'=>'23', 
      ), 
     ); //this parameters are expamle. in fact read from DB 


     foreach($move_arr as $move){ 
      $cron = new cronjob(); // Is this Correct?? 
      $cron->set_package_param($move['k1'], $move['m1']) 
       ->move_to_FTP(); 
     } 

    } 

    public function set_package_param($k1, $m1){ 
     $this->k1 = $k1; 
     $this->m1 = $m1; 
     return $this; 
    } 

    private function move_to_FTP(){ 
     $this->k1; 
     $this->m1; //use these in function ..... 


    } 

    private function integration_db(){ 
     $this->k1; 
     $this->m1; //use these in function ..... 

    } 
} 

?> 

Insted из

 foreach($move_arr as $move){ 
      $cron = new cronjob(); // Is this Correct?? 
      $cron->set_package_param($move['k1'], $move['m1']) 
       ->move_to_FTP(); 
     } 

У вас есть лучший код предложение?

+1

Что вы имеете в виду "правильно"? Вы попробовали? Это сработало? Что-то случилось иначе, чем вы ожидали? – Jon

+1

все нормально. Вы также можете сделать 'new static()', поэтому вам не нужно обновлять имя класса в двух местах, если оно меняет –

+1

@onetrickpony: лучше сделайте это 'new self()'. Нет смысла приводить LSB в это. – Jon

ответ

1

Я думаю, вы должны использовать $ это

как так:

foreach($move_arr as $move){ 
     // get rid of this line --- $cron = new cronjob(); // Is this Correct?? 
     $this->set_package_param($move['k1'], $move['m1']) 
      ->move_apk_to_FTP(); 
    } 
Смежные вопросы