Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/11/2014, 07:06
mikehove
 
Fecha de Ingreso: abril-2012
Ubicación: Argentina
Mensajes: 215
Antigüedad: 12 años
Puntos: 2
Sintetizar Clases PDO

Hola buena gente del Foro. Necesito preguntarles si se puede sintetizar estas 2 clases que lo único que lo diferencian son el nombre de la clase y el nombre de la tabla.

¿Cuál es la mejor forma?

Clase 1:
Código PHP:
Ver original
  1. class Clase1 {
  2.        //Propiedades    
  3.         private static $host      = 'localhost';   
  4.     private static $user      = 'user';
  5.         private static $pass      = 'pass;
  6.     private static $dbname    = 'mi_base'; 
  7.     private static $dbh;
  8.         private static $error; 
  9.     private static $router;
  10.  
  11.    public static function construct(){
  12.        // Set DSN -- Donde se conecta
  13.         $dsn = 'mysql:host=' . self::$host . ';dbname=' . self::$dbname;       
  14.        // Set options
  15.        $options = array(
  16.            PDO::ATTR_PERSISTENT    => true,
  17.            PDO::ATTR_ERRMODE       => PDO::ERRMODE_EXCEPTION
  18.         );         
  19.        // Create a new PDO instanace, crear el objeto de acceso a base de datos
  20.        try{
  21.            self::$dbh = new PDO($dsn, self::$user, self::$pass, $options);
  22.             //funcion para crear el menu desde la base de datos
  23.             self::setRouter();     
  24.        }
  25.        // Catch any errors
  26.        catch(PDOException $e){
  27.            self::$error = $e->getMessage();
  28.        }
  29.    }
  30.    
  31.    public static function setRouter() {//Le cargo a 'router' los valores de inicialización
  32.      $array = array();
  33.      $stmt = self::$dbh->prepare('SELECT * FROM tabla_1');//stmt = statement = Sentencia, consulta
  34.      $stmt->execute();
  35.  
  36.      // Luego recorrer el juego de resultados:
  37.       while($row = $stmt->fetch(PDO::FETCH_ASSOC))
  38.       {
  39.           $array[$row['nombrePagina']] =
  40.           array(
  41.           'columna' => $row['columnaPagina'],
  42.           'contenido' => $row['contenidoPagina']         
  43.           );
  44.         // Asigno la columna sólo si es necesaria
  45.           if($row['columnaPagina'] != '')
  46.           {      
  47.             //$array[$row['arrayUrl_name']]['arrayUrl_column'] = $row['arrayUrl_column'];
  48.           }
  49.       }
  50.      
  51.      self::$router = $array;      
  52.    }
  53.      
  54. public static function getColumna($file = null ) {
  55.     self::construct();
  56.    if (array_key_exists($file, self::$router) && isset(self::$router[$file]['columna'])) {
  57.        ob_start();
  58.         if(is_file(self::$router[$file]['columna']))
  59.             require_once(self::$router[$file]['columna']);
  60.         return ob_get_clean();     
  61.    }
  62. }
  63.  
  64.  
  65. public static function getContenido($file = null) {
  66.     self::construct();
  67.    if (array_key_exists($file, self::$router) && is_file(self::$router[$file]['contenido'])) {
  68.        ob_start();
  69.         require_once(self::$router[$file]['contenido']);
  70.         return ob_get_clean();
  71.    }
  72. }

Clase 2:
Código PHP:
Ver original
  1. class Clase2 {
  2.        //Propiedades    
  3.         private static $host      = 'localhost';   
  4.     private static $user      = 'user';
  5.         private static $pass      = 'pass;
  6.     private static $dbname    = 'mi_base'; 
  7.     private static $dbh;
  8.         private static $error; 
  9.     private static $router;
  10.  
  11.    public static function construct(){
  12.        // Set DSN -- Donde se conecta
  13.         $dsn = 'mysql:host=' . self::$host . ';dbname=' . self::$dbname;       
  14.        // Set options
  15.        $options = array(
  16.            PDO::ATTR_PERSISTENT    => true,
  17.            PDO::ATTR_ERRMODE       => PDO::ERRMODE_EXCEPTION
  18.         );         
  19.        // Create a new PDO instanace, crear el objeto de acceso a base de datos
  20.        try{
  21.            self::$dbh = new PDO($dsn, self::$user, self::$pass, $options);
  22.             //funcion para crear el menu desde la base de datos
  23.             self::setRouter();     
  24.        }
  25.        // Catch any errors
  26.        catch(PDOException $e){
  27.            self::$error = $e->getMessage();
  28.        }
  29.    }
  30.    
  31.    public static function setRouter() {//Le cargo a 'router' los valores de inicialización
  32.      $array = array();
  33.      $stmt = self::$dbh->prepare('SELECT * FROM tabla_2');//stmt = statement = Sentencia, consulta
  34.      $stmt->execute();
  35.  
  36.      // Luego recorrer el juego de resultados:
  37.       while($row = $stmt->fetch(PDO::FETCH_ASSOC))
  38.       {
  39.           $array[$row['nombrePagina']] =
  40.           array(
  41.           'columna' => $row['columnaPagina'],
  42.           'contenido' => $row['contenidoPagina']         
  43.           );
  44.         // Asigno la columna sólo si es necesaria
  45.           if($row['columnaPagina'] != '')
  46.           {      
  47.             //$array[$row['arrayUrl_name']]['arrayUrl_column'] = $row['arrayUrl_column'];
  48.           }
  49.       }
  50.      
  51.      self::$router = $array;      
  52.    }
  53.      
  54. public static function getColumna($file = null ) {
  55.     self::construct();
  56.    if (array_key_exists($file, self::$router) && isset(self::$router[$file]['columna'])) {
  57.        ob_start();
  58.         if(is_file(self::$router[$file]['columna']))
  59.             require_once(self::$router[$file]['columna']);
  60.         return ob_get_clean();     
  61.    }
  62. }
  63.  
  64.  
  65. public static function getContenido($file = null) {
  66.     self::construct();
  67.    if (array_key_exists($file, self::$router) && is_file(self::$router[$file]['contenido'])) {
  68.        ob_start();
  69.         require_once(self::$router[$file]['contenido']);
  70.         return ob_get_clean();
  71.    }
  72. }