Foros del Web » Programando para Internet » PHP »

Problema al crear un Objeto desde dentro de otro objeto

Estas en el tema de Problema al crear un Objeto desde dentro de otro objeto en el foro de PHP en Foros del Web. Buenos días, Tengo definida una clase que en sus propiedades recoge datos de una base de datos, y los almaceno en un objeto dentro de ...
  #1 (permalink)  
Antiguo 23/08/2016, 04:40
 
Fecha de Ingreso: febrero-2016
Mensajes: 36
Antigüedad: 8 años, 2 meses
Puntos: 2
Problema al crear un Objeto desde dentro de otro objeto

Buenos días, Tengo definida una clase que en sus propiedades recoge datos de una base de datos, y los almaceno en un objeto dentro de la variable $_SESSION.
Cuando intento crear el objeto desde cualquier parte del codigo, me da error de
Código PHP:
Ver original
  1. Fatal error: Call to undefined function Manolo()
(lo del nombre es por que estoy haciendo pruebas, jejeje).
Lo curioso del caso, es que todas las funciones de la clase hacen exactamente lo mismo que esta en cuestion, pero las demas no dan ningun tipo de error.

Lo mas divertido, es que por mucho que le cambie el nombre y le cambie el codigo a la funcion, me sigue dando error unicamente de esta función.

Pongo parte del codigo para que veais lo que digo:

Código PHP:
Ver original
  1. class Selects
  2. {
  3.     /**
  4.      * Datos desplegables para formularios de datos comunes
  5.      */
  6.     var $TiposIVA;
  7.     var $TiposFactura;
  8.     var $TiposClientes;
  9.     var $FormasPagos;
  10.     var $Provincias;
  11.     var $Emisores;
  12.     var $Actividades;
  13.     var $Proveedores;
  14.     var $TiposGastos;
  15.    
  16.  
  17.     public function __construct(){
  18.  
  19.      $this->TiposIVA=TiposIVA();
  20.      $this->TiposFactura=TiposFactura();
  21.      $this->TiposClientes=TiposClientes();
  22.      $this->FormasPagos=FormasPagos();
  23.      $this->Emisores=Emisores();
  24.      $this->Actividades=Actividades();
  25.      $this->Proveedores=Proveedores();
  26.      $this->TiposGastos=TiposGastos();
  27.      $this->Provincias=Manolo();  //En este punto es donde me salta el error
  28.     }
  29.  
  30.     public function Actualiza(){
  31.         $this->Proveedores=Proveedores();
  32.         $this->Actividades=Actividades();
  33.         $this->FormasPagos=FormasPago();
  34.         $this->TiposClientes=TiposClientes();
  35.     }
  36.    
  37.     public function TiposIVA(){
  38.         include ($_SERVER['DOCUMENT_ROOT'] . '/clientes/conecta.php');
  39.         $sql="SELECT * FROM `TipoIVA`";
  40.         $datos=mysql_query($sql, $db);
  41.        
  42.         while ($row = mysql_fetch_assoc($datos)){
  43.             $TiposIVA[]=$row;
  44.         }
  45.         mysql_close($db);
  46.         return $TiposIVA;
  47.     }
  48.     public function TiposFactura(){
  49.         include ($_SERVER['DOCUMENT_ROOT'] . '/clientes/conecta.php');
  50.         $sql="SELECT * FROM `TiposFacturas`";
  51.         $datos=mysql_query($sql, $db);
  52.         while ($row= mysql_fetch_assoc($datos)){
  53.             $TiposFacturas[]=$row;
  54.         }
  55.         mysql_close($db);
  56.         return $TiposFacturas;
  57.         }
  58.     public function TiposClientes(){
  59.         include ($_SERVER['DOCUMENT_ROOT'] . '/clientes/conecta.php');
  60.         $sql="SELECT * FROM `"._TIPOCLIENTE."`";
  61.         $datos=mysql_query($sql, $db);
  62.        
  63.         while ($row = mysql_fetch_assoc($datos)){
  64.             $TiposClientes[]=$row;
  65.         }
  66.         mysql_close($db);
  67.         return $TiposClientes;
  68.         }
  69.     public function FormasPagos(){
  70.         include ($_SERVER['DOCUMENT_ROOT'] . '/clientes/conecta.php');
  71.         $sql="SELECT * FROM `"._FORMASDEPAGO."`";
  72.         $datos=mysql_query($sql, $db);
  73.        
  74.         while ($row = mysql_fetch_assoc($datos)){
  75.             $FormasDePagos[]=$row;
  76.         }
  77.         mysql_close($db);
  78.         return $FormasDePagos;
  79.     }
  80.     public function Emisores(){
  81.         include ($_SERVER['DOCUMENT_ROOT'] . '/clientes/conecta.php');
  82.         $sql="SELECT * FROM `"._EMISORES."`";
  83.         $datos=mysql_query($sql, $db);
  84.        
  85.         while ($row = mysql_fetch_assoc($datos)){
  86.             $Emisores[]=$row;
  87.         }
  88.         mysql_close($db);
  89.         return $Emisores;
  90.     }
  91.     public function Actividades(){
  92.         include ($_SERVER['DOCUMENT_ROOT'] . '/clientes/conecta.php');
  93.         $sql="SELECT * FROM `"._ACTIVIDADES."`";
  94.         $datos=mysql_query($sql, $db);
  95.        
  96.         while ($row = mysql_fetch_assoc($datos)){
  97.             $Actividades[]=$row;
  98.         }
  99.         mysql_close($db);
  100.         return $Actividades;
  101.     }
  102.     public function Proveedores(){
  103.         include ($_SERVER['DOCUMENT_ROOT'] . '/clientes/conecta.php');
  104.         $sql="SELECT * FROM `"._PROVEEDORES."`";
  105.         $datos=mysql_query($sql, $db);
  106.         while ($row = mysql_fetch_assoc($datos)){
  107.             $Proveedores[]=$row;
  108.         }
  109.         mysql_close($db);
  110.         return $Proveedores;
  111.     }
  112.     public function TiposGastos(){
  113.         include ($_SERVER['DOCUMENT_ROOT'] . '/clientes/conecta.php');
  114.         $sql="SELECT * FROM `TiposDeGastos`";
  115.         $datos=mysql_query($sql, $db);
  116.         while ($row = mysql_fetch_assoc($datos)){
  117.             $TiposGastos[]=$row;
  118.         }
  119.         mysql_close($db);
  120.         return $TiposGastos;
  121.     }
  122.     public function Manolo(){
  123.         /*include ($_SERVER['DOCUMENT_ROOT'] . '/clientes/conecta.php');
  124.         $sql="SELECT * FROM `Provincias`";
  125.         $datos=mysql_query($sql, $db) or die (mysql_error());
  126.         while ($row = mysql_fetch_assoc($datos)){
  127.             $Provincias[]=$row;
  128.         }
  129.         mysql_close($db);*/
  130.         return 5;
  131.     }
  132.  
  133. }//Fin de la clase
  134. ?>

¿Es muy raro, alguna pista sobre lo que puede estar pasando?
P.D. No me digais nada sobre usar mysql en vez de mysqli, jajajaja

Última edición por ica1977; 23/08/2016 a las 07:36
  #2 (permalink)  
Antiguo 23/08/2016, 09:35
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: Problema al crear un Objeto desde dentro de otro objeto

Esto es básico, php cree que estas llamando a una función que esta en mismo contexto que la clase. Es decir si tu haces esto.
Código PHP:
Ver original
  1. class Test {
  2.    
  3.     public $message;
  4.    
  5.     public function __construct()
  6.     {
  7.         $this->message = display();
  8.     }
  9.    
  10.     public function display()
  11.     {
  12.         return 'Hola mundo';
  13.     }
  14.    
  15.     public function __toString()
  16.     {
  17.         return $this->message;
  18.     }
  19.    
  20. }
  21.  
  22. $test = new Test;
  23. echo $test;
Te va a marcar el error que mencionas, si quieres llamar a un método dentro de tu clase tienes que usar $this
Código PHP:
Ver original
  1. class Test {
  2.    
  3.     public $message;
  4.    
  5.     public function __construct()
  6.     {
  7.         $this->message = $this->display();
  8.     }
  9.    
  10.     public function display()
  11.     {
  12.         return 'Hola mundo';
  13.     }
  14.    
  15.     public function __toString()
  16.     {
  17.         return $this->message;
  18.     }
  19.    
  20. }
  21.  
  22. $test = new Test;
  23. echo $test;
Si notas la diferencia ?
Cosas adicionales; ya no se usa var para declarar variables y la libreria mysql esta obsoleta y por ultimo procura leer el manual
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 23/08/2016, 09:36
 
Fecha de Ingreso: febrero-2016
Mensajes: 36
Antigüedad: 8 años, 2 meses
Puntos: 2
Respuesta: Problema al crear un Objeto desde dentro de otro objeto

Ostras!!

y las demas me funcionaban porque las tenia declaradas en otro lado... jajajaja
Cagada de las mas tontas posibles.

Muchas gracias...
Llevo hoy todo el dia rayado por esa tonteria...

Eso me pasa por aprovechar el codigo y no quitarlo cuando ya no lo necesito..

Etiquetas: objeto, variable
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:59.