Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/07/2011, 08:41
jorge1409
 
Fecha de Ingreso: junio-2011
Mensajes: 6
Antigüedad: 13 años, 5 meses
Puntos: 0
Pregunta Utilización de Herencias

Hola amigos!!! soy de las personas!! que casi no recurre a foros!! me gusta intentar por mi parte!!! ya que asi se aprende mas facil, pero he llegado a un punto que ni idea qe hacer. voy a explicar el problema!!

Quiero crear una pequeña aplicacion que tenga Login y que los datos esten almacenados en una base de datos MySQL. Hasta el momento no tenia problemas cuando lo hacia de manera funcional, pero he estado leyendo y algunos dicen que ese tipo de programación es obsoleta o antigua, cosas asi por el estilo, que ahora es MVC y eso creo que para mayor facilidad es con Programación Orientada a Objetos.

entonces lo que hize fue lo siguiente, cree una clase para las conexiones MySQL, ya que esos procesos se repiten demasiado, entonces la reutilizacion de codigo es importante, ademas si quisiera hacer un ajuste tendria que hacerlo a una sola parte (la clase), no tendría que estar cambiando en varios archivos.

después cree otra clase llamada usuarios, que es la que permite iniciar sesión cerrar sesión, crear usuarios etc... Entonces estuve mirando y vi que la clase utilizaba código MySQL entonces intente crear un objeto para que manejara el objeto los fragmentos de código para la conexión modificación MySQL !! pero me da error, al intentar manejar un objeto dentro de un metodo, me dice que no reconoce el meto que llamo!! aca pongo los codigos!!! si alguien me puede ayudar gracias!!!

Código PHP:
<?php
class DB_MySQL {
    var 
$servidor;
    var 
$nombreBD;
    var 
$nombreDeUsuario;
    var 
$contrasena;
    var 
$enlace;
    var 
$resultado;
    var 
$filas;
    var 
$consulta;

    public function 
DB_MySQL($servidor,$nombreBD,$nombreDeUsuario,$contrasena){
        
$this->servidor=$servidor;
        
$this->nombreBD=$nombreBD;
        
$this->nombreDeUsuario=$nombreDeUsuario;
        
$this->contrasena=$contrasena;
    }




    public function 
conectarBD(){
        if(
$enlace=mysql_connect($this->servidor$this->nombreDeUsuario$this->contrasena)){
            if(
mysql_select_db($this->nombreBD,$enlace)){
                
$this->enlace=$enlace;                
            }else{
                echo 
"Error conectando con la base de datos";
                exit();
            }
        }else{
            echo 
"Error al enlazar al Servidor!";
            exit();
        }
    }
    

    public function 
consultarBD($sentenciaSQL){
        
$this->consulta=mysql_query($sentenciaSQL,$this->enlace);
    }


    public function 
obtenerResultado(){
        
$this->resultado=mysql_fetch_array($this->consulta);
        return 
$this->resultado;
    }
    
    public function 
consulta($sentenciaSQL){
        return 
mysql_query($sentenciaSQL,$this->enlace);
    }
    
    public function 
obtenerFilas(){
        
$this->filas mysql_num_rows($this->consulta,$this->enlace);
        return 
$this->filas ;
    }
   
    
    public function 
liberarConsulta(){
        
mysql_free_result($this->consulta);
    }

    public function 
desconectarDB(){
        
mysql_close($this->enlace);
    }


}

?>
esa clase si la pruebo desde un archivo php sencillo me funciona a las mil maravillas, hace lo que yo quiero, pero el problema es que cuando quiero crear un objeto dentro de esta clase me da error, me dice que no reconoce los metodos que estoy llamando.

Código PHP:
<?php
include_once 'include/config.php';
include_once 
'include/clases.php';

$Mysql=new DB_MySQL("localhost","siteweb","root","root");
$Mysql->conectarBD();

class 
Usuario {
    

    function  
__construct(){
        
//inicializo el objeto aca???? :S        
    
}
    
   public function 
check_login($emailusername$password
    {

        
$password md5($password);
        
$result $Mysql->consultarBD("SELECT uid from users WHERE email = '$emailusername' or username='$emailusername' and password = '$password'");
        
$user_data $Mysql->obtenerResultado();
        if (
$Mysql->obtenerFilas() == 1
        {
            
$_SESSION['login'] = true;
            
$_SESSION['uid'] = $user_data['uid'];
            return 
TRUE;
        }
        else
        {
            return 
false;
        }
    }

    
    public function 
get_session() 
    {
        
        return 
$_SESSION['login'];
    }

    public function 
user_logout() {
        
$_SESSION['login'] = FALSE;
        
session_destroy();
    }

}


?>
Una de las forma que obtuve un resultado bueno fue creando un objeto de la clase Mysql en cada método, pero no seria reutilizacion de código, ademas saldrían mas lineas que si lo hago sin objeto!!! he leido de la herencia, pero no sabrían en si como utilizarla, ademas estaria utilizando era la clase, y para la conexión con MySQL toca que iniciar un objeto, entonces no sabria como hacer!! llevo dos dias y no se me ocurre ya nada mas!! gracias de antemano!!!