Bueno, depende de como estas programando, si usas, por ejemplo el patron Singleton, solo obtienes la instancia del modelo, ya sea en el mismo controlador o en cada una de las funciones donde lo requieras.
Por ejemplo, to modelo podria tener algo como:
Código PHP:
Ver originalclass modelo {
private static $_instance = false;
private function __construct() {} // Privado para evitar crear instancias desde fuera
public static function getInstance() {
if(self::$_instance === false) {
// No se ha creado una instancia
self::$_instance = new self();
}
return self::$_instance;
}
// Aqui el resto de funciones para acceso a la tabla
}
En tu controlador puedes tener algo como:
Código PHP:
Ver originalclass controlador {
private $_modelo = false;
public function __construct() {
// Si no has incluido el script para el modelo
include 'ruta/modelo.php';
$this->_modelo = modelo::getInstance();
}
public function nuevasNoticias() {
$noticias = $this->_modelo->leerNoticias(/* parametros, si se necesitan */);
// Aqui ejecutas la vista
}
}
// O bien... podrias obtener la instancia del modelo en cada funcion:
class controlador {
public function __construct() {
// Si no has incluido el script para el modelo
include 'ruta/modelo.php';
}
public function nuevasNoticias() {
$noticias = modelo::getInstance()->leerNoticias(/* parametros, si se necesitan */);
// Aqui ejecutas la vista
}
}
Esto podria ser util si en la misma pagina (mismo o diferente controlador) debes tener acceso al modelo y requieres que sea solo una instancia del modelo.
Si requieres dos o mas instancias (depende mucho de que estes haciendo), entonces tendras que buscar informacion sobre Factory, en lugar de Singleton.
Por otra parte, en tu controlador frontal podrias crear una funcion que cargue los archivos y clases que requieras, de manera que puedas, por ejemplo:
Código PHP:
Ver original// Si es una funcion estatica:
$modelo = frontController::loadClass('ruta/archivo.php', 'nombre_de_la_clase');
// Y la funcion seria algo como:
public static function loadClass($file, $class) {
include_once $file;
} else {
// Aqui lanzas una excepcion
}
// Supongamos que es con Singleton:
return $class::getInstance();
} else {
// Aqui lanzas una excepcion
}
}
Ojo, esto es de un aprendiz a otro, asi que puede que mis sugerencias no sean las mas adecuadas, pero podrian serte de utilidad.