Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

[Consulta] Clase para conexion a Base de Datos en PHP

Estas en el tema de [Consulta] Clase para conexion a Base de Datos en PHP en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola ! Hace poco empecé a programar con objetos y estoy haciendo un pequeño blog. Me gustaría saber si lo que estoy haciendo esta bien, ...
  #1 (permalink)  
Antiguo 25/10/2009, 14:51
Avatar de netcirion  
Fecha de Ingreso: agosto-2006
Ubicación: Argentina
Mensajes: 6
Antigüedad: 17 años, 8 meses
Puntos: 1
[Consulta] Clase para conexion a Base de Datos en PHP

Hola !
Hace poco empecé a programar con objetos y estoy haciendo un pequeño blog. Me gustaría saber si lo que estoy haciendo esta bien, saber que tengo que correjir y demas.

Este es lo que hice:

config.php
Código PHP:
<?php
define
("HTTP_HOST"$_SERVER['HTTP_HOST']);

if (
HTTP_HOST == "www[dot]misitio[dot]com" || HTTP_HOST == "misitio[dot]com") {
    
$dbHost 'misitio[dot]com';
    
$dbUser 'user';
    
$dbPass 'pass';
    
$dbName 'dbname';
} else {
    
$dbHost 'localhost';
    
$dbUser 'local_user';
    
$dbPass 'local_pass';
    
$dbName 'local_dbname';
}
?>
connection.class.php
Código PHP:
<?php

class ConfigDataBase {
    private 
$_dbHost;
    private 
$_dbUser;
    private 
$_dbPass;
    private 
$_dbName;
    
    public function 
__construct() {
        require 
'includes/config.php';
        
$this->_dbHost $dbHost;
        
$this->_dbUser $dbUser;
        
$this->_dbPass $dbPass;
        
$this->_dbName $dbName;
    }
    
    private function 
__clone() {}
    
    public function 
getHostDB() {
        
$var $this->_dbHost;
        return 
$var;
    }
    
    public function 
getUserDB() {
        
$var $this->_dbUser;
        return 
$var;
    }
    
    public function 
getPassDB() {
        
$var $this->_dbPass;
        return 
$var;
    }
    
    public function 
getNameDB() {
        
$var $this->_dbName;
        return 
$var;
    }
}

class 
ConnectionDataBase {
    private 
$dbHost;
    private 
$dbUser;
    private 
$dbPass;
    private 
$dbName;
    private 
$link;
    private 
$result;
    
    function 
__construct() {
        
$this->configConnection();
        
$this->setConnection();
    }
    
    protected function 
configConnection() {
        
$config = new ConfigDataBase();
        
$this->dbHost $config->getHostDB();
        
$this->dbUser $config->getUserDB();
        
$this->dbPass $config->getPassDB();
        
$this->dbName $config->getNameDB();
    }
    
    private function 
__clone() {}
    
    private function 
setConnection() {
        
$this->link mysql_connect($this->dbHost$this->dbUser$this->dbPass);
        if (
$this->link)
            
mysql_select_db($this->dbName);
        else
            throw new 
Exception('Database Error No. ' mysql_errno() . ': ' mysql_error());
    }
    
    function 
__destruct() {
        
mysql_close($this->link);
    }
}

?>
post.class.php
¿Conviene hacer la conexion aca adentro o es mejor hacerla en el index.php (mas abajo) y despues instanciar cla clase Post?
Código PHP:
<?php

class Post {
    private 
$link;
    private 
$query;
    private 
$result;
    
    function 
__construct() {
        
$this->setConnection();
    }
    
    protected function 
setConnection() {
        require_once 
'app/connection.class.php';
        
$this->link = new ConnectionDataBase();
    }
    
    public function 
getList($totalRow$orderBy) {
        
$this->query "SELECT * FROM post WHERE status = 'A' ORDER BY " $orderBy " DESC LIMIT 0," $totalRow;
        
$this->result mysql_query($this->query);
        return 
$this->result;
    }
    
    public function 
getPostById($id) {
        
$this->query "SELECT * FROM post WHERE status = 'A' AND id = " $id;
        
$this->result mysql_query($this->query);
        return 
$this->result;
    }
}

?>
index.php
Código PHP:
<?php

require_once 'app/post.class.php';
$posts = new Post();
$post $posts->getList(10'date');
            
while (
$p mysql_fetch_object($post)) {
        echo 
'<div style="margin-bottom: 5px;"><a href="view-post.php?      id_post='.$p->id.'" title="">'.$p->title.'</a></div>';
}
mysql_free_result($post);

?>
Espero sus consejos !!

Saludos !
  #2 (permalink)  
Antiguo 25/10/2009, 15:12
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: [Consulta] Clase para conexion a Base de Datos en PHP

no crees que combinar las funciones de mysql_*() junto con lo que devuelve tu clase es algo incoherente??

osea..

mira este ejemplo (imaginando que sabrás como implementarlo)
Código PHP:
require_once 'app/post.class.php';
$posts = new Post();
$post $posts->getList(10'date');
            
foreach (
$post as $p) {
        echo 
'<div style="margin-bottom: 5px;"><a href="view-post.php?      id_post='.$p->id.'" title="">'.$p->title.'</a></div>';

osea, las funciones de MySQL deben ser internas de tus clases, así.. si algún día cambias tu clase de MySQL a MySQLi pues... ¡¡que ventaja!!!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 25/10/2009, 21:28
Avatar de bng5  
Fecha de Ingreso: junio-2009
Ubicación: 127.0.0.1
Mensajes: 269
Antigüedad: 14 años, 10 meses
Puntos: 24
Respuesta: [Consulta] Clase para conexion a Base de Datos en PHP

Cita:
Iniciado por pateketrueke Ver Mensaje
no crees que combinar las funciones de mysql_*() junto con lo que devuelve tu clase es algo incoherente??
Estoy totalmente de acuerdo con esa observación.

Y si de verdad querés un consejo: Te recomiendo que, para empezar, hagas una clase que extienda de PDO.
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 22:37.