PHP OOP core framework
Solo estoy publicando esta pregunta para que algunos de ustedes puedan señalarme de la manera correcta. Poco a poco me estoy calentando a OOP, comenzando a entender el concepto. Quiero hacer un buen núcleo sólido o base para ser utilizado como backend de CMS. También usará MVC. He estado usandohttp: //gilbitron.github.com/PIP como la base MVC.
o que no puedo entender es lo siguiente:
Say, en la página del proyecto en el backend tengo 2 secciones: htmltext y projects y debería poder editarlos a ambos. La uri sería algo así como: // dominio / backend / projects (el método sería el índice y mostraría las 2 secciones)
Cuando hago clic en proyectos, ¿cómo debería manejarse? // dominio / backend / projects / projects / o // dominio / backend / projects / list /
Un paso más allá, un proyecto contendrá algunas imágenes o una galería: // dominio / backend / projects / edit / 5 / gallery / 2
Mi pregunta aquí es, primero: ¿sería una buena manera de hacerlo y aún más importante cómo se implementaría esto en OOP
el controlador de proyectos principales:
class projects {
function index(){
// view index
}
function edit{
$project = new Project();
$projectdata = $project->load(5);
}
}
Un controlador de proyecto único
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");
}
}
Ahora mi pregunta. Si este proyecto tiene imágenes, ¿dónde debo cargar la clase de imagen para manejarlas? ¿Debo cargarlo en el proyecto_modelo como $ this-> images = new Images (); y tener una función dentro del modelo
function loadimages($id){
$this->images->load($id);
}
y luego las imágenes serían 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 los controladores y modelos se mezclan de esta manera. Sin embargo, de manera lógica, un proyecto es un contenedor que contiene información de proyecto, que podría ser texto, imágenes y quizás videos. ¿Cómo haría yo para configurar eso lógicamente también?