GatorV,
Ya tengo los 4 ficheros
config_reader.php
Código PHP:
Ver original<?php
class Config
{
private $_config;
public function __construct($sFile)
{
throw new Exception("Can't find file: $sFile");
}
}
public function getConfig()
{
return $this->_config;
}
}
?>
db.php
Código PHP:
Ver original<?php
class db {
private $_username;
private $_password;
private $_host;
private $_db;
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'];
}
}
?>
registry.php
El código que publicó el compañero
atrianaster
y
params.ini
Código:
username = "root"
password = "jupiter"
host = "localhost"
db = "codelab"
Por último, el fichero donde los llamo (tuve que cambiar tu ejemplo de función "
set" por la que definió atrianaster "
add", imagino que es lo mismo.
Código PHP:
Ver original<?php
require('config_reader.php');
require('db.php');
require('registry.php');
$config = new Config('params.ini');
$db = new db($config);
Registry::add('db', $db);
?>
¿Ahora cómo juego con todo esto?... entiendo que haciéndolo de esta forma evitamos el usar el patrón singleton, esto nos proporciona la ventaja de que ahora sea posible conectarse a diferentes bases de datos desde el mismo script.
Ej. la base de datos master donde solo se escribiría, y la slave donde solo se harían lecturas, correcto?
Dentro de la clase db (fichero
db.php) debería crear un nuevo método que fuese la conexión con PDO, así verdad?
Código PHP:
Ver originalpublic function Conectar(){
try {
$dbh = 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();
}
}
Y en el ejemplo/llamada hacer:
Código PHP:
Ver original<?php
require('config_reader.php');
require('db.php');
require('registry.php');
$config = new Config('params.ini');
$db = new db($config);
Registry::add('db', $db);
$db->Conectar();
?>
De forma que a partir de ese momento, seguiría utilizando la clase
db normalmente y solo utilizaría el Registry::add(....) para hacer el paso previo a la conexión, todo bien hasta aquí? :S Debo de volverlo a utilizar en alguna ocasión más por si quiero hacer una consulta a la otra base de datos?
Gracias de antemano!