Comunidad de diseño web y desarrollo en internet online

ayuda con clases en php

Citar            
MensajeEscrito el 22 Abr 2011 11:19 pm
hola tengo el siguiente codigo en un archivo llamado conf.php

Código PHP :

<?
class base {
  private $nombre="localhost";
  private $usuario="root";
  private $pass="xxxx";
  private $base="jp";
  private $conexion;
  
 private function conectar()
  {
      $this->conexion = mysql_connect($this->nombre,$this->usuario,$this->pass); 
      mysql_select_db($this->base,$this->conexion); 
  }
  
  
}
?>


y este otro llamado dat.php

Código PHP :

class informa extends base {

   public function datos ($busc){
   base::conectar();
   $resultado=  mysql_query("SELECT * FROM informacion", $this->conexion);
   if ($row = mysql_fetch_array($resultado))
      {
      echo $row["$busc"];}
   }

}

y tengo este en index.php

Código PHP :

<?
//incluimos todo
require 'class/conf.php';
require 'class/dat.php';
$datos_basicos = new informa();

$datos_basicos->datos("empresa");
?>

el problema es que me aparece un error que dice
Fatal error: Call to private method base::conectar() from context 'informa' in C:\AppServ\www\file\jp\class\dat.php on line 5


pero cuando colo la función dentro de la clase base corre común y corriente, no se que este haciendo mal me gustaría que me ayudaran
gracias

Por lucho0929

14 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 23 Abr 2011 04:26 am
prueba haciendo publica esta funcion

private function conectar()

Por talcual

686 de clabLevel



 

Colombia

firefox
Citar            
MensajeEscrito el 24 Abr 2011 12:55 am
correcto, es lo que dicen antes

Por sebifrost

61 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Abr 2011 02:20 pm
esta parte esta mal

Código PHP :

public function datos ($busc){ 
         base::conectar();

tu clase informa es hija de base por lo cual la forma de llamar a sus funciones y demas deberia ser

Código PHP :

public function datos ($busc){ 
         $this->conectar();

o si nos modifica tu clase para que siempre se conecte sin hacer llamadas explicidas a los metodos con sus metodos magicos como __construct

Código PHP :

class base { 
  private $nombre="localhost"; 
  private $usuario="root"; 
  private $pass="xxxx"; 
  private $base="jp"; 
  private $conexion; 
   
 public function __construct() 
  { 
      $this->conexion = mysql_connect($this->nombre,$this->usuario,$this->pass);  
      mysql_select_db($this->base,$this->conexion);  
  } 
} 

y tu clase final solo seria esta

Código PHP :

class informa extends base { 
   public function datos ($busc){ 
   $resultado=  mysql_query("SELECT * FROM informacion", $this->conexion); 
   if ($row = mysql_fetch_array($resultado)) 
      { 
      echo $row["$busc"];} 
   } 
} 

menos codigo y mas claros a tambien acostumbrate a comentar tu codigo

Código PHP :

require 'class/conf.php'; 
require 'class/dat.php'; 
$datos_basicos = new informa(); 
$datos_basicos->datos("empresa"); 

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 25 Abr 2011 09:06 pm
muchas gracias amigos, puse la funcion de conectar como protegida y tambien sirvio
gracias a todos

Por lucho0929

14 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 27 Abr 2011 02:35 am
recuerda que desde la ultima version puedes usar el constructor con el mismo nombre de la clase

Por talcual

686 de clabLevel



 

Colombia

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.