2014-03-01 100 views
0

我有一個名爲「EncodeController」的控制器。在這個控制器中,我從一個名爲「uploads_table」的表中編寫了一個函數,該函數獲取存儲在數據庫中的原始文件路徑。然後,它使用ffmpeg轉換文件,當轉換完成時,我希望控制器將新文件的編碼版本信息存儲在新表「encodes_table」中。Laravel-php的構造函數

爲了獲得訪問我使用__construct功能表,就像這樣:

protected $upload; 
protected $encode; 

public function __construct(Upload $upload) { 

    $this->upload = $upload; 
} 

public function ___construct(Encode $encode) { 

    $this->encode = $encode; 
} 

我設法讓該工作,但問題是;這會被認爲是不好的做法嗎?

更新: 我改變了我的構造函數:

protected $upload; 
protected $encode; 

public function __construct(Upload $upload, Encode $encode) { 
    $this->upload = $upload; 
    $this->encode = $encode; 
} 

回答

0

看代碼事情是這樣的,沒有什麼不對,但看起來像你的代碼將增長,這樣的事情可能會被認爲是不好的做法:

protected $upload; 
protected $encode; 

public function __construct(Upload $upload, Encode $encode) 
{ 
    $this->upload = $upload; 

    $this->encode = $encode; 
} 

public function upload() 
{ 
    $file = ffmpegencode($this->upload->getFile()); 

    $this->encode->file = $file; 

    $this->encode->uploaded_at = new \Carbon\Carbon; 

    $this->encode->save(); 
} 

控制器知道你的模型太多,它不是一個理想的耦合。相反,你應該如此:

public function upload() 
{ 
    if(! $this->encode->encodeUploadedFile($this->upload->getFile())) 
    { 
     return Redirect::to('error'); 
    } 

    return Redirect::to('success'); 
}