Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/10/2013, 06:41
juandedios
 
Fecha de Ingreso: mayo-2003
Ubicación: Lima
Mensajes: 967
Antigüedad: 21 años
Puntos: 8
Problema con clases

Hola, estoy haciendo una aplicación y en un formulario de registro tengo que llenar varios select, como por ejemplo: categorías, marcas, etc.

Tengo varias clases, una para categorías, marcas, etc.

Uso el patrón Singleton, pero al llamar a más de una clase, me sale este mensaje:

Fatal error: Cannot redeclare class Database in F:\xampp\htdocs\ruben\compra2\inc\class\dbConnect. php on line 2

Les pongo la clase de conexión y 2 de las otras para ver como es que puedo evitar este error:

Clase dbConnect:
Código PHP:
class Database {
    static private 
$instance;
    private 
$conn;
    
    private function 
__construct() {
        try{
            
$this->conn = new PDO('mysql:host=localhost;dbname=compras''root''kadmi2013');
            
$this->conn->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);
            
$this->conn->exec("SET CHARACTER SET utf8");
        }catch(
PDOException $e){
            echo 
"ERROR: " $e->getMessage();
        }
    }
    
    public static function 
singletonConection() {
        if (!isset(
self::$instance)) {
            
$miclase __CLASS__;
            
self::$instance = new $miclase;
        }
 
        return 
self::$instance;
    }

    public function 
prepare($sql) {
        return 
$this->conn->prepare($sql);
    }
    
    public function 
__clone() {
        
trigger_error('La clonación de este objeto no está permitida.'E_USER_ERROR);
    }

Clase tipoDocumentos:
Código PHP:
require("dbConnect.php");

class 
tipoDocumentos {
    static private 
$instance;
    private 
$conn;
    private 
$error 0;
    private 
$result;
    const 
TABLA "tipo_documento";
    
    
//Constructor
    
private function __construct() {
        
$this->conn Database::singletonConection();
    }
    
    public static function 
singletonTipoDocumento() {
        if (!isset(
self::$instance)) {
            
$miclase __CLASS__;
            
self::$instance = new $miclase;
        }
 
        return 
self::$instance;
    }
   
    
//Listar select tipo de documento
    
public function listaTipoDocumento($tipoDocumento null) {
        
        try {
            
$sql "SELECT * FROM " self::TABLA " ORDER BY nombre";
            
$query $this->conn->prepare($sql);
            
            if (!
$query->execute()) {
                
$this->error 1;
            }
            else {
                
$nr $query->rowCount();
                if (
$nr 0) {
                    while (
$row $query->fetch(PDO::FETCH_NUM)) {
                        if (
$row[0] == $tipoDocumento) {
                            
$this->result .= "<option value='" $row[0] . "' selected>" $row[1] . "</option>";
                        }
                        else {
                            
$this->result .= "<option value='" $row[0] . "'>" $row[1] . "</option>";
                        }
                    }
                }
                else {
                    
$this->result "<option value=''>No hay tipos de documentos</option>";
                }
                
                
$this->conn null;
                return 
$this->result;
            }
        } catch (
PDOExeption $e) {
            return 
"Error: " $e->getMessage();
        }
        
        return 
$this->error;
    }
    
    public function 
__clone() {
        
trigger_error('La clonaci&oacute;n no est&aacute; permitida para este objeto.'E_USER_ERROR);
    }

Clase Provincias:
Código PHP:
require("dbConnect.php");

class 
Provincia {
    static private 
$instance;
    private 
$conn;
    private 
$error 0;
    private 
$result;
    const 
TABLA "provincias";
    
    
//Constructor
    
private function __construct() {
        
$this->conn Database::singletonConection();
    }
    
    public static function 
singletonProvincias() {
        if (!isset(
self::$instance)) {
            
$miclase __CLASS__;
            
self::$instance = new $miclase;
        }
 
        return 
self::$instance;
    }
   
    
//Listar select provincias
    
public function listaProvincias($provincia null) {
        try {
            
$sql "SELECT * FROM " self::TABLA " ORDER BY nombre";
            
$query $this->conn->prepare($sql);
        
            if (!
$query->execute()) {
                
$this->error 1;
            }
            else {
                
$nr $query->rowCount();
                if (
$nr 0) {
                    while (
$row $query->fetch(PDO::FETCH_NUM)) {
                        if (
$row[0] == $provincia) {
                            
$this->result .= "<option value='" $row[0] . "' selected>" $row[1] . "</option>";
                        }
                        else {
                            
$this->result .= "<option value='" $row[0] . "'>" $row[1] . "</option>";
                        }
                    }
                }
                else {
                    
$this->result "<option value=''>No hay provincias</option>";
                }
                
                
$this->conn null;
                return 
$this->result;
            }
        } catch (
PDOExeption $e) {
            return 
$e->getMessage();
        }
        
        return 
$this->error;
    }
    
    public function 
__clone() {
        
trigger_error("La clonaci&oacute;n no est&aacute; permitida para este objeto."E_USER_ERROR);
    }

Espero su ayuda. Gracias.
__________________
El aprendiz.