我试图重构我创建的一些混乱的代码,并创建一个单一责任的类。对此挣扎,往往会把所有东西都弄成一个类,现在很难维护。我现有的代码很复杂。
我正在使用laravel 5.1框架,因此很多功能已经存在,例如文件系统,我使用的是图像处理包。
如果我能够帮助理解以下示例的一个好方法,我希望我可以学习并继续重构代码。
因此。我希望用户将图像文件上传到服务器,创建一些拇指,然后上传到云存储。
我挣扎的那一点可能非常基础 - 如何开始上课。
我正在创建一个将上传文件的新课程:到目前为止,这是骨架:
class FileUpload
{
private $originalFile;
private $validFiles = [
'images' => ['png', 'jpg', 'gif', 'zip'],
'documents' => ['doc', 'docx', 'xls', 'xlsx', 'csv', 'pdf']
];
private $filepath;
private $filename;
private $validFileSize = [
'image' => 10388608,
'video' => 8388608,
'other' => 4194304
];
public function _construct()
{
}
/**
* upload file to server
* @param $file
*/
public function uploadFile($file)
{
$this->setOriginalFile($file);
}
/**
* check file size
* check file size to ensure will be able to upload to server
*
*/
private function checkValidFileSize()
{
// dostuff
}
/**
* set file type attribute
*/
private function setFileType() {
}
/**
* set class attributes
**/
private function ($file) {
// set attributes of class e.g.type, filename, filepath
}
}
在我的控制器中,我会按照以下方式做点什么:
public function uploadFile(FileUpload $fileUpload) {
$fileUpload->fileUpload($file);
}
我对开始创建uploadFile
类的最佳方式感到困惑 - 设置参数然后进行实际上传。
然后我想拿这个文件并操纵它来创建大拇指并调整大小等等如果它是一个图像 - 我会在另一个类中做的
然后为文件
创建一个db条目然后最终上传到云存储
组织此代码以确保单一责任并将其全部连接在一起的最佳方法是什么。
在过去,我已经从控制器进行了所有函数调用 - 但这已经变得非常冗长,并且想要尝试将代码放在正确的位置。
任何有助于指出正确方向的帮助