Cita:
Iniciado por atrianaster Positivo a eso era a lo que me refería anteriormente usa $this para invocar al metodo Conectar(), que contiene una referencia al objeto actual.
Si quieres ver el contenido de $this puedes utilizar la función
var_dump($this); o de lo contrario busca un IDE que te permita debugear, yo en particular utilizo
Netbeans IDE
Saludos.
La clase ha quedado así, ya conecta con la base de datos pero no consigo ejecutar las consultas de la clase Categoria, puedes indicarme que estoy haciendo mal?
db.class
Código PHP:
Ver original<?php
class db {
private $_username;
private $_password;
private $_host;
private $_db;
private $_conexion;
public function __construct(Config $config)
{
$config_data = $config->getConfig();
$this->_username = $config_data['username'];
$this->_password = $config_data['password'];
$this->_host = $config_data['host'];
$this->_db = $config_data['db'];
$this->Conectar();
}
private function Conectar(){
try {
$this->_conexion = new PDO("mysql:host=$this->_host;dbname=$this->_db", $this->_username, $this->_password);
/*** echo a message saying we have connected ***/
echo 'Connected to database';
}
catch(PDOException $e){
echo $e->getMessage();
}
return $this->_conexion;
}
}
?>
ejemplo1.php
Código PHP:
Ver original<?php
require('config_reader.php');
require('db.php');
require('registry.php');
class Categoria{
private $nombreCategoria;
// Listar todas las categorias de la base de datos
public function listarCategorias($DbInstance){
$query = "SELECT nombre FROM categorias";
$comando = $DbInstance->prepare($query);
$comando->execute();
while( $datos = $comando->fetch() ) {
// Imprimimos resultados
echo $datos[0].'<br />';
}
}
}
//Cargo los datos del fichero .ini
$config_slave = new Config('params_slave.ini');
$config_master = new Config('params_master.ini');
//Creo el objeto de la base de datos
$db_slave = new db($config_slave);
$db_master = new db($config_master);
//Guardo las instancias diferentes con Registry
Registry::save('db_slave', $db_slave);
Registry::save('db_master', $db_master);
//Recupero las instancias con Registry
$db_slave=Registry::get('db_slave');
$db_master=Registry::get('db_slave');
$cat= new Categoria();
$cat->listarCategorias($db_slave);
?>
Error que me da
Connected to databaseConnected to database
Fatal error: Call to undefined method db::prepare() in C:\wamp\www\00-laboratorio_test\secciones\class_categorias\Nueva\ ConectarCon2_BD\ejemplo1.php on line 13
La linea es esta
$comando = $DbInstance->prepare($query);
¿Estoy pasandole mal la instancia a la clase Categoria???