Я просто отправляю этот вопрос, чтобы некоторые из вас могли правильно указать мне. Я медленно прогрелюсь до ООП, начинаю понимать концепцию. Я хочу создать хорошее твердое ядро или основу для использования в качестве CMS-сервера. Он также будет использовать MVC. Я использовал http://gilbitron.github.com/PIP/ в качестве базы MVC.
То, что я не могу понять, следующее:
Скажем, на странице проекта в бэкэнд у меня есть 2 раздела: htmltext и проекты, и я должен иметь возможность редактировать их оба. Ури будет примерно таким: //domain/backend/projects (метод будет индексом и покажет 2 раздела)
Когда я нажимаю на проекты, как это следует обрабатывать? //domain/backend/projects/projects/or // домен/Серверные/проекты/список/
Еще один шаг: проект будет содержать некоторые изображения или галерею: // домен/бэкенд/проекты/редактировать/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");
}
}
Кажется, что контроллеры и модели путаются таким образом. Но логичным способом проект является контейнером, который содержит projectinfo, который может представлять собой текст, изображения и, возможно, видео. Как я тоже собираюсь установить это логически.