Por lo visto no puedo acceder una "propiedad" privada (atributo)... y no acabo de comprender exactamente cual es mi error.
Cita:
Tengo dos archivos, dos clases. La primera clase se encarga simplemente de los atributos de la base de datos, usuario, contraseña, host, dsnPrefix etc...Fatal error: Cannot access private property DatabaseConfig::$_dsn in C:\Users\pc1\Desktop\php\ModelsBase.php on line 21
Código PHP:
<?php
class DatabaseConfig
{
private $_dsnPrefix = 'mysql';
private $_host = 'localhost';
private $_port = '3306';
private $_user = 'root';
private $_pass = 'password';
private $_dbName = 'phpbb3';
private $_dsn = NULL;
public function __construct()
{
$this->_dsn = $this->_dsnPrefix . ':host=' . $this->_host . ';port=' . $this->_port . ';dbname=' . $this->_dbName;
}
}
Código PHP:
<?php
require 'DatabaseConfig.php';
class ModelsBase
{
private $_db;
static private $instance = NULL;
private function __construct() {}
static public function getInstance()
{
if (self::$instance == NULL) {
self::$instance = new ModelsBase();
self::$instance->_db = new DatabaseConfig();
self::$instance->connect();
}
return self::$instance;
}
public function connect()
{
return new PDO($this->_db->_dsn, $this->_db->_user, $this->_db->_pass);
}
}
// Comprobación de acceso a DB
$db = ModelsBase::getInstance();
$consulta = $db->prepare('SELECT * FROM phpbb3_users');
$consulta->execute();
?><ul><?php
while($fila = $consulta->fetch())
{
?>
<li><?php echo $fila[0]?></li>
<li><?php echo $fila[1]?></li>
<?php
}
?></ul>
Mi conjetura es que no tenga acceso o visibilidad ya que la llamada primera será estática... pero si así fuese, todavía no comprendo la razón de ese comportamiento.
Espero podais ayudarme.
Gracias