Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/04/2011, 02:10
Avatar de Triby
Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Solicitud de orientacion

Estoy reescribiendo mis codigos y entrando mas de lleno a POO, por lo que me gustaria que me den opiniones sobre lo que estoy trabajando para saber si voy bien o me regreso:

1- Clase principal: Aqui cargo toda la configuracion y tengo funciones generales para manejo de mensajes, errores, redirecciones, etc.
2- Clase abstractas base donde creo funciones que usan la instancia de la clase principal, con el fin de evitar al maximo el uso de global $clase; (claro, fuera de la base )
3- Clases abstractas (model, view, controller) que extienden la clase base y que incluyo solo funciones especificas para cada capa.
4- Clase especifica (model, view, controller) para cada modulo.

Ejemplo:
Código PHP:
Ver original
  1. // Clase general
  2. class principal {
  3.     private $_models = array();
  4.     public function __construct() {}
  5.     // Obtener o crear instancia de un modelo
  6.     public function getModel($model) {
  7.         if(!isset($this->_models[$model])) {
  8.             $file = "ruta/{$model}.model.php";
  9.             $class = $model . 'Model';
  10.             // try-catch para incluir el archivo
  11.             // Verifico que exista la clase
  12.             $this->_models[$model] = new $class();
  13.         }
  14.         return $this->models[$model];
  15.     }
  16.     // Crear archivo de cache
  17.     public function saveCache($file, $contents) {
  18.         // Guardo todo en un archivo
  19.     }
  20.     // Manejo de errores
  21.     public function error($msg) {
  22.         die($msg); // Es solo un ejemplo
  23.     }
  24. }
  25.  
  26. // Clase base para tener acceso a funciones generales en modelo, vista y controlador
  27. class base {
  28.     protected function __construct() {}
  29.     public function error($msg) {
  30.         global $principal;
  31.         $principal->error($msg);
  32.     }
  33. }
  34.  
  35. // Clase para modelos
  36. class myModel extends base {
  37.     protected function __construct() {}
  38.     public function saveCache($file, $contents) {
  39.         global $principal;
  40.         $principal->saveCache($file, $contents);
  41.     }
  42. }
  43.  
  44. // Modelo para configuracion del sistema
  45. class configModel extends myModel {
  46.     private $_config = array(); // Acceso y modificacion con getter y setter
  47.     public function __construct() {
  48.         // Cargo la configuracion desde la base de datos
  49.         // Si algo falla:
  50.         parent::error('No se puede cargar la configuracion.');
  51.     }
  52.     public function saveConfig($newValues) {
  53.         // Guardo los nuevos valores de configuracion
  54.         // Guardo todo en archivo de cache
  55.         parent::saveCache('config', $this->_config);
  56.     }
  57. }

Ok, ese es el resumen de lo que llevo hasta ahora, por el momento tengo la clase para conexion y manejo de base de datos "por fuera" y tengo que estar usando global $db; para tener acceso a sus metodos.

Todos los comentarios y sugerencias son bienvenidos. Gracias.
__________________
- León, Guanajuato
- GV-Foto