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

PHP OO Utilización de Herencias

Estas en el tema de Utilización de Herencias en el foro de Frameworks y PHP orientado a objetos en Foros del Web. 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, ...
  #1 (permalink)  
Antiguo 27/07/2011, 08:41
 
Fecha de Ingreso: junio-2011
Mensajes: 6
Antigüedad: 12 años, 9 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!!!
  #2 (permalink)  
Antiguo 27/07/2011, 09:00
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Utilización de Herencias

No es necesario heredar en tu caso, la herencia se hace solamente cuando hay relación de parentezco, y quieres modificar y/o agregar funcionalidad a una clase.

Para hacer lo que quieres tienes que crear el objeto en el construct y almacenarlo en una propiedad y luego usarlo:
Código PHP:
Ver original
  1. class Foo
  2. {
  3.         private $_bar;
  4.  
  5.         public function __construct()
  6.         {
  7.                 $this->_bar = new Bar();
  8.         }
  9.  
  10.         public function sayBar()
  11.         {
  12.                 $this->_bar->say('bar');
  13.         }
  14. }

Saludos.
  #3 (permalink)  
Antiguo 27/07/2011, 09:04
 
Fecha de Ingreso: junio-2011
Mensajes: 6
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Utilización de Herencias

Gracias lo pruebo y te aviso!! muchas gracias por la pronta respuesta!!!! :D
  #4 (permalink)  
Antiguo 27/07/2011, 09:22
 
Fecha de Ingreso: junio-2011
Mensajes: 6
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Utilización de Herencias

Gracias señor Moderador!!!!! xD me funciono a las mil maravillas!!!! jejjejje menos mal existe personas que ayudan!!! y que hacen que la Internet sea un lugar tan bueno tan excelente, por eso es la siguiente revolución!!! no a la censura de Internet!! no la censura de P2P!!! no a las leyes que buscan acabar Internet como la conocemos!!! arriba la libertad!! y arriba el mejor sitio web de foros!!! XD

Etiquetas: extends, herencia, php, 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




La zona horaria es GMT -6. Ahora son las 02:58.