Foros del Web » Programando para Internet » PHP »

¿Cómo hacer correctamente clase de conexión de BD para incluirlas en otras clases?

Estas en el tema de ¿Cómo hacer correctamente clase de conexión de BD para incluirlas en otras clases? en el foro de PHP en Foros del Web. Hola amigos capos del foro. Tengo 2 clases que se conectan a diferentes BD y funcionan bien. El tema es que necesito ayuda de la ...
  #1 (permalink)  
Antiguo 28/08/2013, 01:12
 
Fecha de Ingreso: abril-2012
Ubicación: Argentina
Mensajes: 215
Antigüedad: 12 años
Puntos: 2
¿Cómo hacer correctamente clase de conexión de BD para incluirlas en otras clases?

Hola amigos capos del foro. Tengo 2 clases que se conectan a diferentes BD y funcionan bien. El tema es que necesito ayuda de la manera correcta de hacer una clase de conexión (incluir) para ambas y así optimizar los códigos.

Puede ser que me haga falta retocar la función __contruct, o los accesos para llegar al éxito.

1era clase:

Código PHP:
class Helper {
    
//Propiedades     
    
private static $host      'localhost';
    private static 
$user       'root';
    private static 
$pass      '';
    private static 
$dbname    'menu_url';    
    
    private static 
$dbh;
    private static 
$error;
    
    private static 
$router;
 
    public static function 
construct(){
        
// Set DSN -- Donde se conecta
        
$dsn 'mysql:host=' self::$host ';dbname=' self::$dbname;        
        
// Set options
        
$options = array(
            
PDO::ATTR_PERSISTENT    => true,
            
PDO::ATTR_ERRMODE       => PDO::ERRMODE_EXCEPTION
        
);            
        
// Create a new PDO instanace, crear el objeto de acceso a base de datos
        
try{
            
self::$dbh = new PDO($dsnself::$userself::$pass$options);
            
//funcion para crear el menu desde la base de datos
            
self::setRouter();        
        }
        
// Catch any errors
        
catch(PDOException $e){
            
self::$error $e->getMessage();
        }
    }
    
    public static function 
setRouter() {//Le cargo a 'router' los valores de inicialización
.....
      }
      
     
self::$router $array;       
    }
 
public static function 
getColumn($file null ) {
......
}


public static function 
getContent($file null) {
.....
}
              


2nda clase:

Código PHP:
class MenuCategoria {
    
//Propiedades    
    
private $host      'localhost';
    private 
$user      'root';
    private 
$pass      '';
    private 
$dbname    'menu_categorias';    
    
    private 
$dbh;
    private 
$error;
    



 
    public function 
__construct(){
        
// Set DSN
        
$dsn 'mysql:host=' $this->host ';dbname=' $this->dbname;        
        
// Set options
        
$options = array(
            
PDO::ATTR_PERSISTENT    => true,
            
PDO::ATTR_ERRMODE       => PDO::ERRMODE_EXCEPTION
        
);            
        
// Create a new PDO instanace
        
try{
            
$this->dbh = new PDO($dsn$this->user$this->pass$options);                
        }
        
// Catch any errors
        
catch(PDOException $e){
            
$this->error $e->getMessage();
        }
    }
    
   
   
public function 
display_children($id) {

 ......
}  

              
}

//Instanceo Helper
$db = new MenuCategoria();

$db->display_children(2); 

Última edición por mikehove; 28/08/2013 a las 07:26
  #2 (permalink)  
Antiguo 25/10/2013, 12:56
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ¿Cómo hacer correctamente clase de conexión de BD para incluirlas en otras

Bueno puedes pasar el parametro de la tabla a traves del constructor

Código PHP:
Ver original
  1. class Helper {
  2.     //Propiedades    
  3.     private static $host      = 'localhost';
  4.     private static $user       = 'root';
  5.     private static $pass      = '';
  6.  
  7.     private $dbname    = 'default';    // default
  8.    
  9.     private static $dbh;
  10.     private static $error;
  11.    
  12.     private static $router;
  13.  
  14.     public static function construct($db = null){
  15.  
  16.    $this->dbname = empty($db) ? $this->dbname : $db;
  17.  
  18.         // Set DSN -- Donde se conecta
  19.         $dsn = 'mysql:host=' . self::$host . ';dbname=' . $this->$dbname;        
  20.         // Set options
  21.         $options = array(
  22.             PDO::ATTR_PERSISTENT    => true,
  23.             PDO::ATTR_ERRMODE       => PDO::ERRMODE_EXCEPTION
  24.         );            
  25.         // Create a new PDO instanace, crear el objeto de acceso a base de datos
  26.         try{
  27.             self::$dbh = new PDO($dsn, self::$user, self::$pass, $options);
  28.             //funcion para crear el menu desde la base de datos
  29.             self::setRouter();        
  30.         }
  31.         // Catch any errors
  32.         catch(PDOException $e){
  33.             self::$error = $e->getMessage();
  34.         }
  35.     }
  36.    
  37.     public static function setRouter() {//Le cargo a 'router' los valores de inicialización
  38. .....
  39.       }
  40.      
  41.      self::$router = $array;      
  42.     }
  43.  
  44. public static function getColumn($file = null ) {
  45. ......
  46. }
  47.  
  48.  
  49. public static function getContent($file = null) {
  50. .....
  51. }
  52.              
  53. }
  54.  
  55. $obj = new Helper('menu_categorias');
  56. $obj2 = new Helper('menu_url');
  57. $obj3 = new Helper(); // default

Etiquetas: php+base+de+datos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:35.