Foros del Web » Programando para Internet » PHP »

[Aporte] Elaboracion de clases POO PHP

Estas en el tema de [Aporte] Elaboracion de clases POO PHP en el foro de PHP en Foros del Web. Como el titulo lo indica esta es una clase de POO en PHP usando mysqli, contiene metodos para obtener total de registros, ejecutar sentencias y ...
  #1 (permalink)  
Antiguo 27/08/2013, 07:46
Avatar de j_silk_h  
Fecha de Ingreso: julio-2010
Mensajes: 54
Antigüedad: 14 años, 4 meses
Puntos: 6
Información [Aporte] Elaboracion de clases POO PHP

Como el titulo lo indica esta es una clase de POO en PHP usando mysqli, contiene metodos para obtener total de registros, ejecutar sentencias y devolver un array de registro de la consulta ejecutada, esto lo culminare con ayuda de mi amigo @jonni09lo

Archivo: config.php
Descrip: Contiene datos de usuario, clave, nombre de la base de datos y ruta del host

Código PHP:
<?php
$host 
"localhost";
$user "root";
$password "";
$db "administrativo";
?>
Archivo: php.php
Descrip: Contiene la clase y sus metodos

Código PHP:
<?php
session_start
();
date_default_timezone_set("America/Caracas");

class 
Conf{
    private 
$_user;
    private 
$_password;
    private 
$_host;
    private 
$_database;
    
    static 
$_instance;
    
    private function 
__construct(){
        require(
"config.php");
        
$this->_user=$user;
        
$this->_password=$password;
        
$this->_host=$host;
        
$this->_database=$db;
    }
    
    private function 
__clone(){
    }
    
    public static function 
getInstance(){
        if(!(
self::$_instance instanceof self)){
            
self::$_instance = new self;
        }
        return 
self::$_instance;
    }
    
    public function 
getUserDB(){
        
$var $this->_user;
        return 
$var;
    }
    
    public function 
getHostDB(){
        
$var $this->_host;
        return 
$var;
    }
    
    public function 
getPassDB(){
        
$var $this->_password;
        return 
$var;
    }
    
    public function 
getDB(){
        
$var $this->_database;
        return 
$var;
    }
}

class 
Db{
    private 
$servidor;
    private 
$usuario;
    private 
$password;
    private 
$database;
    private 
$conex;
    private 
$result;
    
    static 
$_instance;
    
    private function 
setConexion(){
        
$conf Conf::getInstance();
        
$this->servidor=$conf->getHostDB();
        
$this->database=$conf->getDB();
        
$this->usuario=$conf->getUserDB();
        
$this->password=$conf->getPassDB();
    }
    
    private function 
__construct(){
        
$this->setConexion();
        try{
            
$this->conex = new mysqli($this->servidor$this->usuario$this->password$this->database);
        }catch(
Exception $e){
            echo 
$e->getMessage();
        }
    }
    
    public function 
ejecutar($sql){
        
$this->result $this->conex->query($sql);
    }
    
    public function 
getTotalRegistros(){
        return(
$this->result->num_rows);
    }
    
    public function 
getRegistro($campobd){
        if(
$campobd=="*"){
            return(
$this->result->fetch_array(MYSQLI_ASSOC));
        }else{
            
$array $this->result->fetch_array(MYSQLI_ASSOC);
            return(
$array[$campobd]);
        }
    }
    
    public static function 
getInstance(){
        if(!(
self::$_instance instanceof self)){
            
self::$_instance = new self();
        }
        return 
self::$_instance;
    }
    
}

//Ejemplo de una función para obtener la IP del cliente y obtener la dirección de donde trabajará esa maquina

function getUbicacionCliente(){

    
$ip=$_SERVER['REMOTE_ADDR'];
    
$bd Db::getInstance();
    
$bd->ejecutar("SELECT * FROM maquinas_ubicaciones where ip = '".$ip."' ");

    if(
$bd->getTotalRegistros()>1){
        echo 
"Direccion IP comprometida";
    }else{
        
header("Location://".$bd->getRegistro("url"));
    }
}


?>
__________________
!Si se puede imaginar se puede programar!
  #2 (permalink)  
Antiguo 27/08/2013, 08:20
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 12 años
Puntos: 84
Respuesta: [Aporte] Elaboracion de clases POO PHP

se ve interesante, gracias y ánimo!!
__________________
Ayúdame a hacerlo por mi mismo.
  #3 (permalink)  
Antiguo 27/08/2013, 13:52
Avatar de j_silk_h  
Fecha de Ingreso: julio-2010
Mensajes: 54
Antigüedad: 14 años, 4 meses
Puntos: 6
De acuerdo Respuesta: [Aporte] Elaboracion de clases POO PHP

Cita:
Iniciado por guardarmicorreo Ver Mensaje
se ve interesante, gracias y ánimo!!
Gracias guardarmicorreo
__________________
!Si se puede imaginar se puede programar!
  #4 (permalink)  
Antiguo 27/08/2013, 22:02
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 5 meses
Puntos: 379
Respuesta: [Aporte] Elaboracion de clases POO PHP

Cita:
Iniciado por j_silk_h Ver Mensaje
  • Documenta tus clases
  • No mezcles nombres en ingles y español

Procura solo tener las definiciones de tus clases, lo demas debe de estar en documentos aparte
Código PHP:
<?php
session_start
();
date_default_timezone_set("America/Caracas");
Evita usar estructuras como requre y similares dentro de tus clases. Si tu clase requiere algo pasalo mediante sus metodos.
Código PHP:
    
    
private function __construct(){
        require(
"config.php");
        
$this->_user=$user;
        
$this->_password=$password;
        
$this->_host=$host;
        
$this->_database=$db;
    } 
La variable $conf pasala como argumento.
Código PHP:
    
    
private function setConexion(){
        
$conf Conf::getInstance();
        
$this->servidor=$conf->getHostDB();
        
$this->database=$conf->getDB();
        
$this->usuario=$conf->getUserDB();
        
$this->password=$conf->getPassDB();
    }
?> 
Por lo demás felicidades, espero que sigas mejorando tus habilidades en POO
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #5 (permalink)  
Antiguo 09/09/2013, 15:12
Avatar de j_silk_h  
Fecha de Ingreso: julio-2010
Mensajes: 54
Antigüedad: 14 años, 4 meses
Puntos: 6
Pregunta Respuesta: [Aporte] Elaboracion de clases POO PHP

Quiero saber si existe algun error en mi sentencia SQL, algo asi como el Mysql_error() debido a que en el siguiente query no me anexa ningun registro a mi tabla, y cuando coloco al final la funcion or die("Error"); me dice error obviamente, pero pruebo con un simple select y corre perfectamente,
Código PHP:
$bd->ejecutar("insert into empleado (
                                        nombres,
                                        apellidos,
                                        cedula,
                                        direccion,
                                        telefono,
                                        fecha_ingreso,
                                        condicion,
                                        cargo,
                                        salario_base
                                        ) values (
                                        '"
.$nombres."',
                                        '"
.$apellidos."',
                                        '"
.$cedula."',
                                        '"
.$direccion."',
                                        '"
.$telefono."',
                                        '"
.$fecha_ingreso."',
                                        '"
.$condicion."',
                                        '"
.$cargo."',
                                        '"
.$salario."'
                                        )"
); 
__________________
!Si se puede imaginar se puede programar!
  #6 (permalink)  
Antiguo 09/09/2013, 15:51
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 13 años, 2 meses
Puntos: 397
Respuesta: [Aporte] Elaboracion de clases POO PHP

Al ver que usar mysqli mira este enlace

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.

Etiquetas: mysqli, poo
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 2 personas




La zona horaria es GMT -6. Ahora son las 21:48.