#php
#php
Вопрос:
У меня есть много объектов: категории, производители, предметы, статьи и т.д. У каждого объекта есть свои загружаемые файлы: изображения, руководства в формате PDF и т.д. Загруженные файлы могут быть общедоступными и защищенными (доступными для просмотра / скачивания только зарегистрированным пользователям).
Я хотел бы перенести всю процедуру загрузки в один (или несколько) класс.
На данный момент у меня есть 2 определенные константы в index.php ( PATH_UPLOAD_PUBLIC
, PATH_UPLOAD_PROTECTED
). Это абсолютные пути к хранилищам, где я храню общедоступные и защищенные файлы. Общедоступный путь доступен из Интернета, защищенный путь недоступен из Интернета (он находится в корневом каталоге документа виртуального хоста).
На данный момент у каждого метода контроллера, имеющего дело с загрузкой, есть фрагмент кода, содержащий move_uploaded_file() и так далее.
Пожалуйста, помогите сделать его более красивым и разделить этот код на класс.
Спасибо.
PS: Извините за мой английский.
Комментарии:
1. Боюсь, я не понимаю, какого ответа вы ожидаете.
2. Возможно, любые образцы существующих классов. Или, может быть, истории о том, как другие программисты реализовали класс upload.
Ответ №1:
Если вы ищете примеры того, как создать класс, который занимается загрузкой, то перейдите по http://www.phpclasses.org и выполните поиск класса загрузки файла.
Если вы хотите поиграть и создать свой собственный. Я бы предложил начать с простого. Создайте конструкцию, а затем метод, который в основном будет использовать один параметр public или private в зависимости от того, куда вы хотите переместить файл. В этом методе вы вводите логику move_upload_file).
В итоге получается что-то вроде этого:
$fileupload - new MyFileUploadClass(); //you class would have to have _-construct obvioulsy
$fileupload->uploadfile(true); // you uploadfile would have one parameter being true or false and then
ваш метод будет выглядеть примерно так
function uploadfile($private=false){
$path = PATH_UPLOAD_PUBLIC;
if($private)
$path = PATH_UPLOAD_PRIVATE;
move_upload_file($_FILE[name], $path);
}