strutura básica do PHP OOP
Estou apenas postando esta pergunta para que alguns de vocês possam me indicar o caminho certo. Estou lentamente me aquecendo para OOP, começando a entender o conceito. Quero criar um bom núcleo ou base sólida para ser usado como back-end do CMS. Ele também usará o MVC. Eu tenho usadohttp: //gilbitron.github.com/PIP como a base MVC.
A coisa que eu não consigo entender é o seguinte:
Diga, na página do projeto no back-end, eu tenho duas seções: htmltext e projects e devo poder editá-las. O uri seria algo como: // domain / backend / projects (o método seria o índice e mostraria as 2 seções)
Quando clico em projetos, como ele deve ser tratado? // domínio / back-end / projetos / projetos / ou // domínio / back-end / projetos / lista /
Um passo adiante, um projeto conterá algumas imagens ou uma galeria: // domain / backend / projects / edit / 5 / gallery / 2
Minha pergunta aqui é, primeiro: isso seria um bom caminho a percorrer e ainda mais importante como isso seria implementado no OOP
o controlador de projetos principais:
class projects {
function index(){
// view index
}
function edit{
$project = new Project();
$projectdata = $project->load(5);
}
}
Um único controlador de projeto
class project {
function __construct(){
$this->projectmodel = $this->loadModel('project_model'); // prepare the model to be used
}
function load($id){
$this->projectmodel->loadproject($id);
}
}
project model
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");
}
}
Agora minha pergunta. Se este projeto tiver imagens, onde devo carregar a classe de imagem para lidar com elas? Devo carregá-lo no project_model como $ this-> images = new Images (); e tem uma função dentro do modelo
function loadimages($id){
$this->images->load($id);
}
e as imagens seriam algo como:
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");
}
}
Parece que os controladores e os modelos se misturam dessa maneira. No entanto, de uma maneira lógica, um projeto é um contêiner que contém informações sobre o projeto, que podem ser textos, imagens e talvez vídeos. Como eu iria configurar isso logicamente também.