Koenig, а зачем свой Kfile есть SplFileInfo, который может все то же?
Delphinum, ну там же ещё методы добавляются
Koenig, generatehash? Я бы вынес его в интерфейс или в FileStorage (или и то и другое). Файл это файл )
storage -> upload -> storage -> file
?
ramzes, я бы предложил:
PSR7 (UploadedFile) -> Storage -> SplFileInfo
т.е. аплоад инициализируется логикой? не хранилищем?
ramzes, Не обязательно, можно сделать фассадный метод:
class FileStorage{
public function upload($name){
$file = UploadedFile::fromGlobal($name);
$this->moveIn($file);
}
}
Просто мне кажется что ваше хранилище файлов может пригодиться не только для загрузки файлов клиентом, но и для хранения вообще всех файлов которые есть в системе (к примеру для хранения превьюшек и файлок, загружаемых через всякие парсеры). В этом случае у файлового хранилища должна быть только логика добавления готового файла в него, а логика загрузки файла это отдельная тема.
# Delphinum (25.08.2016 / 17:32)
Koenig, generatehash? Я бы вынес его в интерфейс или в FileStorage (или и то и другое). Файл это файл )
Я бы поспорил. Это ведь придётся везде за собой FileStorage таскать даже там, где он не нужен. И почему файл не может знать о хэше? Не вижу в этом ничего страшного. Единственное, что не нравится, так это имена методов. Вместо generatehash() я бы написал getMd5Hash(), а вместо data() -- asArray() или toArray().
reaper, если тебе необходимо в любом месте системы получать md5 хеш файла, то да, это должно относится к файлу, но если md5 хеш файла нужен только для сохранения его в хранилище (и получения его из хранилища), то это не часть файла и ее лучше вынести. Зависит от задачи )