пишем галерею, часть 1.
Сколько всего уже успели понаписать в нашем мире, есть и большие навороченные галереи, есть и маленькие, есть прекрасные а есть не очень. Есть галереи с использованием БД, а есть нет. Казалось, выбирай и радуйся. Но это просто, а значит не интересно. Будем писать галерею с использованием ООП, на ПХП :), без БД, даже практически без файлов), все будет хранится в объектах, которые в промежутках между вызовами будут сериализованы и аккуратно записаны на жесткий диск.
Почему так?, потому, что такой вариант хранения данных я еще не использовал, практика 🙂
Так как создание галереи есть процесс настоящего времени, то логика и модель архитектуры еще весьма не однозначна, что-то будет добавлено, что-то убрано, а что-то изменено до неузнаваемости, отнеситесь с пониманием к этому факту 🙂
начнем пожалуй.
Класс в котором мы держим информацию о каждой загруженной фотографии: название, описание и так далее
class Img { private $file=""; #имя файла private $date=""; #дата загрузки/фотографии private $title=""; #название снимка private $description="";#описание private $visible=false; #показывать private $comment=false; #включены комментарии public function setFile($s){ $this->file=$s; } public function setDate($date){ $this->date=$date; } public function setTitle($s){ $this->title=$s; } public function setDescription($s){ $this->description=$s; } public function setVisible($b){ $this->visible= $b == true ? true : false; } public function setComment($b){ $this->comment= $b == true ? true : false; } public function getFile(){ return $this->file; } public function getDate(){ return $this->date; } public function getTitle(){ return $this->title; } public function getDescription(){ return $this->description; } public function getVisible(){ return $this->visible; } public function getComment(){ return $this->comment; } }
класс хранилище для классов изображений, в нем реализованы методы добавления/удаления/изменения данных изображений (для работы с классом Img)
class ImgStorage { private $aImg=array(); private $conf=null; private $func=null; public function __construct(SiteConfig $sc){ $this->conf=$sc; $this->func=new Func(); } public function addImg($file,$date,$title,$description,$visible,$comment){ if ($this->func->isFile($this->conf->getPathToImg().'/'.$file==false)){print "Error, file $file not found";exit;} $i=array_push($this->aImg,new Img()); $this->aImg[$i]->setFile($file); $this->aImg[$i]->setDate($this->func->isDate($date)==true ? $date : time()); $this->aImg[$i]->setTitle($this->func->cutText($this->func->getText($title), 100)); $this->aImg[$i]->setDescription($this->func->cutText($this->func->getText($title), 1000)); $this->aImg[$i]->setVisible($this->func->isBool($visible)); $this->aImg[$i]->setComment($this->func->isBool($comment)); } public function deleteImg($id){ if ($this->func->deleteFile($this->conf->getPathToImg().'/'.$this->aImg[$id]->getFile())){ unset($this->aImg[$id]); } } public function updateImg($id,$date,$title,$description,$visible,$comment){ $this->aImg[$id]->setDate($this->func->isDate($date)==true ? $date : time()); $this->aImg[$id]->setTitle($this->func->cutText($this->func->getText($title), 100)); $this->aImg[$id]->setDescription($this->func->cutText($this->func->getText($title), 1000)); $this->aImg[$id]->setVisible($this->func->isBool($visible)); $this->aImg[$id]->setComment($this->func->isBool($comment)); } public function getImage($id){ return array_key_exists($id, $this->aImg[$id]) ? $this->aImg[$id] : null; } }
Комментарии закрыты.