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

Problema con extend..

Estas en el tema de Problema con extend.. en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buenos dias amigos, actualmente tengo un problema al aplicar la funcion extend en una clase que nunca me habia pasado, los archivos que tengo son ...
  #1 (permalink)  
Antiguo 14/12/2009, 10:00
 
Fecha de Ingreso: junio-2009
Mensajes: 79
Antigüedad: 14 años, 9 meses
Puntos: 0
Pregunta Problema con extend..

Buenos dias amigos, actualmente tengo un problema al aplicar la funcion extend en una clase que nunca me habia pasado, los archivos que tengo son los siguientes:

core.lib.php // Esta libreria incluye todas las clases que voy a usar en la aplicacion.

Código PHP:
require('lib/conn.php');
require(
'lib/login.class.php');
require(
'lib/dbtools.class.php'); 
dbtools.class.php //Clase para gestionar las consultas a la base de datos, les muestro solo la funcion de 'select' pero tiene varias funciones.

Código PHP:
class db_tools {
    var 
$make_errors false//Activa o desactiva los errores en base de datos del sistema
    
var $specialstr=array("    ","\n\r","\n","\r");
    var 
$var_error '';
    var 
$var_sql_error '';
    var 
$var_trans '0';
    
    function 
select_tool($query){
        
$result=mysql_query($query);
        
$res_array=array(); $i 0;
        if (
$result) {
            if (
mysql_num_rows($result) > 0){
                while(
$row=mysql_fetch_array($result)){
                    foreach(
$row as $key=>$value){
                        
$res_array[$i][$key]=$value;
                    }
                    
$i++;
                }
                return 
$res_array;
            }else{
                return 
null;
            }
        }else{
            if (
$make_errors){
                
$this->var_error mysql_error();
                
$this->var_sql_error $this->rewritedata($query);
                
$this->ins_error();
            }else{
                die(
mysql_error()." -> ".$query);
            }
        }
    }

login.class.php //Tiene las funciones relacionadas con el login de usuarios

Código PHP:
class login extends db_tools {
    
    function 
login_user($login_usuarios$password_usuarios){    
        
        
$login_usuarios stripslashes($login_usuarios); //Para proteger de inyecciones SQL
        
$password_usuarios stripslashes($password_usuarios); //Para proteger de inyecciones SQL
        
        
$login_usuarios mysql_real_escape_string($login_usuarios); //Para proteger de inyecciones SQL
        
$password_usuarios mysql_real_escape_string($password_usuarios); //Para proteger de inyecciones SQL
        
        
$Query "SELECT * FROM usuarios WHERE login_usuarios = '$login_usuarios' AND password_usuarios = '$password_usuarios'";
        
        return 
$this->select_tool($Query);
    }    

En mi pagina principal solo tengo un formulario de login y password que, al hacer click en entrar me manda a otra pagina donde compruebo la informacion del usuario con la funcion de la clase login:
Código PHP:
//Objetos
$login = new login;

//Arreglos
$arrLogin $login->login_user($_REQUEST['login_user'], $_REQUEST['password_user']); 
El problema es que apenas entro a la pagina me aparece el siguiente error:

Fatal error: Class 'db_tools' not found in C:\webs\SHOPPING MANAGER\lib\login.class.php on line 7

La linea 7 es la linea donde esta el extend, si copio todas las funciones de la clase dbtools, las pego en la clase de login y quito el extend funciona perfectamente pero en varias aplicaciones que he hecho anteriormente he trabajado de esta forma y no habia tenido problemas

Alguna idea de que pueda estar pasando? Gracias por adelantado!
  #2 (permalink)  
Antiguo 14/12/2009, 10:14
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con extend..

la clase principal debe ser cargada antes de la secundaria...

osea, que debes incluir antes tu clase db_tools para que así pueda ser extendida mas adelante...

Código PHP:
require('lib/dbtools.class.php');
require(
'lib/login.class.php'); 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 14/12/2009, 10:16
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Problema con extend..

Cambia el orden en que incluyes los archivos:
Código PHP:
Ver original
  1. require('lib/conn.php');
  2. require('lib/dbtools.class.php');
  3. require('lib/login.class.php');
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #4 (permalink)  
Antiguo 14/12/2009, 10:18
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
Tema movido desde PHP a PHP orientado a objetos
  #5 (permalink)  
Antiguo 14/12/2009, 12:46
 
Fecha de Ingreso: junio-2009
Mensajes: 79
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Problema con extend..

Oh jeje no lo vi, problema solucionado, muchisimas gracias!!
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 09:07.