Foros del Web » Programando para Internet » PHP »

PHP OO Extendiendo una clase

Estas en el tema de Extendiendo una clase en el foro de PHP en Foros del Web. Buenos dias tengo una clase llamada login.php y otra Db que es quien hace la conexion a la base de datos ambas dentro del mismo ...
  #1 (permalink)  
Antiguo 22/08/2016, 19:34
 
Fecha de Ingreso: mayo-2012
Mensajes: 117
Antigüedad: 11 años, 11 meses
Puntos: 1
Extendiendo una clase

Buenos dias tengo una clase llamada login.php y otra Db que es quien hace la conexion a la base de datos ambas dentro del mismo directorio estoy tratando de extender la clase 'Login extends Db' y poder usar sus metodos pero me lanza este error "Call to undefined method Db::query"

Mi clase Db.php extiende a mysql y funciona perfectamente asi como mi clase db extiende a mysqli es como quiero hacer pero con la clase login

Código PHP:
Ver original
  1. //Class Db
  2. class Db extends mysqli{
  3.     private $User;
  4.     public function __construct(){
  5.         parent:: __construct('localhost','root','','peritaciones');
  6.         $this->connect_errno ? die("No conetacdo") : $c = 'Conectado';
  7.     }
  8.     function Confirm($sql){
  9.             return mysqli_num_rows($sql);
  10.        }
  11. }

Esta es mi estructura de login
Código PHP:
Ver original
  1. class Login extends Db{
  2.     //private $db;
  3.     public function __construct(){
  4.         $this->db = new Db();
  5.     }
  6.  
  7.     public function login($vals){
  8.                //Aqui dice que esta mi error que los metodos que llamo de Db no existen
  9.         $sql = $this->db->query("SELECT id_usuario, id_sesion, sesion_desde, correo_profesional, id_rol FROM sesion Where correo_profesional = '$vals[usuario]' AND contrasena = '$vals[contrasena]' AND estado = 1");
  10.         $res = $this->db->Confirm($sql);
  11.     }
  12. }

Me podrian decir donde esta mi equivocacion, No estoy usando ningun tipo de require_once, si lo uso entonces no me da ningun tipo de error pero quiero extender la clase para evitar usar el require_once ... se les agradece mucho

Última edición por BaSingSe; 22/08/2016 a las 19:49
  #2 (permalink)  
Antiguo 23/08/2016, 09:28
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Extendiendo una clase

Me puedes mostrar como estas usando tu clase ? recuerda que debes de tener la definición de la clase que extiende Login
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 23/08/2016, 17:16
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 18 años
Puntos: 120
Respuesta: Extendiendo una clase

una cosa en tu clase Login
si estas extendiendo la clase DB, por que estas instanciando la clase en la propiedad db??
Código:
$this->db = new Db();
otra cosa
al realizar
Código:
public function __construct(){
        $this->db = new Db();
}
estas borrando el constructor PADRE
bueno lo mejor yo te recomendaria que trabajes con un ORM sencillo yo trabajo con esta
http://www.notorm.com
es simple y sencillo ,y para que no andes con quebraderos de cabeza,OJO si vas a usar consultas complejas de MYSQL, recuerda usar la potencia de mysql, ose crear VISTAS donde puede estar los JOINS

Etiquetas: clase, mysql, select, sql
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 06:38.