Я просто отправляю этот вопрос, чтобы некоторые из вас могли указать мне правильный путь. Я медленно разогреваюсь до ООП, начинаю понимать концепцию. Я хочу сделать хорошее твердое ядро или основу для использования в качестве CMS-сервера. Он также будет использовать MVC. Я использовал http://gilbitron.github.com/PIP/ в качестве базы MVC.
Я не могу понять следующее:
Скажем, на странице проекта в бэкэнде у меня есть 2 раздела: htmltext и проекты, и я должен иметь возможность редактировать их оба. URI будет что-то вроде:
// domain / backend / projects (метод будет индексировать и отображать 2 раздела)
Когда я нажимаю на проекты, как это должно быть обработано?
// домен / бэкэнд / проекты / проекты / или
// домен / бэкенд / проекты / список /
Еще один шаг, проект будет содержать несколько изображений или галерею:
// домен / бэкенд / проекты / редактировать / 5 / галерея / 2
Мой вопрос здесь, во-первых: это будет хороший путь, и еще более важно, как это будет реализовано в ООП
Контроллер основных проектов:
class projects {
function index(){
// view index
}
function edit{
$project = new Project();
$projectdata = $project->load(5);
}
}
Контроллер одного проекта
class project {
function __construct(){
$this->projectmodel = $this->loadModel('project_model'); // prepare the model to be used
}
function load($id){
$this->projectmodel->loadproject($id);
}
}
модель проекта
class project_model extends model { //extends for DB access and such
function __construct(){
// do stuff
}
function loadproject($id){
return $this->db->query("SELECT * FROM projects where id=" . $id . " LIMIT 1");
}
}
Теперь мой вопрос. Если в этом проекте есть изображения, где я должен загрузить класс изображений для их обработки? Должен ли я загрузить его в project_model, как $ this-> images = new Images (); и есть функция внутри модели
function loadimages($id){
$this->images->load($id);
}
и тогда изображения будут выглядеть примерно так:
class image extends model { //extends for DB access and such
function __construct(){
}
function load($id){
return $this->db->query("SELECT * FROM project_images where id=" . $id . " LIMIT 1");
}
}
Кажется, что контроллеры и модели перепутаны таким образом. Тем не менее, логичным образом проект представляет собой контейнер, содержащий информацию о проекте, которая может быть текстом, изображениями и, возможно, видео. Как я собираюсь настроить это также логически.