Ok era una pregunta tonta.
Mira estos son una parte de los archivos que estoy usando en los ejemplos de registry.
Código PHP:
Ver original<?php
include("Factory.php");
include("Registry.class.php");
include("Reader.class.php");
include("Db.class.php");
class DatabaseFactory implements Factory
{
public static function create($sIniFile)
{
$config = new Reader($sIniFile);
$config_data = $config->getConfig();
$database_class = key($config_data); include($database_class.'.class.php');
$db = new $database_class($config);
registry::add($sIniFile, $db);
return $db;
}
}
?>
Código PHP:
Ver original<?php
final
class Mysql extends PDO
{
private $_username;
private $_password;
private $_host;
private $_db;
public function __construct(Reader $config)
{
$config_data = $config->getConfig();
$this->_username = $config_data['Mysql']['username'];
$this->_password = $config_data['Mysql']['password'];
$this->_host = $config_data['Mysql']['host'];
$this->_db = $config_data['Mysql']['dbname'];
$this->_dsn = 'mysql:dbname='.$this->_db.';host='.$this->_host;
parent::__construct($this->_dsn, $this->_username, $this->_password);
}
}
?>
Código PHP:
Ver original<?php
/*
* Clase encargada de gestionar las conexiones a la base de datos
* @author Esteban Quintero
*/
Class Db{
/*establese la conexion*/
protected $_conect;
/*trabaja los query*/
protected $_query;
/*resultados de las consultas*/
protected $_row;
protected $_result;
/**
* La función construct es privada para evitar que el objeto pueda ser creado mediante new
**/
function __construct(){
try{
$site_path = '../../includes/DB/config.ini';
$this->_conect=DatabaseFactory::create($site_path);
} catch (Exception $e){
}
}
/**
* Método para ejecutar una sentencia sql
* @param String $sql sentencia sql para ejecutar en la BD.
*
**/
public function ejecutar($sql){
try{
$this->sql=$sql;
$this->resulset = $this->_conect->query($sql);
if(!$this->resulset){
error_log("error al ejecutar la consulta ".$sql." funcion ejecutar ",3,"errorlog/Db_log.log");
}
}catch(Exception $e){
error_log("error al ejecutar la consulta ".$sql." funcion ejecutar ".$e->getMessage(),3,"errorlog/Db_log.log"); }
return $this->resulset;
}
/**
*Método para obtener una fila de resultados de la sentencia sql
*@param String $resulset resulset del resultado de la sentencia.
*/
public function obtener_fila($resulset){
try{
if(!$resulset){
}else{
$this->array=$resulset->fetchObject(); }
}catch(Exception $e){
error_log($e->getMessage()." Clase Db Funcion obtener_fila parametro".$resulset,3,"errorlog/user_log.log"); }
}
/*
*Método para obtener las filas de resultados de la sentencia sql
*@param String $resulset resulset del resultado de la sentencia.
*/
public function obtener_filas($resulset){
if(!$resulset){
error_log("Error en la consulta sql :".$this->sql." funcion obtener_filas",3,"errorlog/Db_log.log"); }else{
$this->array=$resulset->fetchAll(); }
}
/**
*Método para obtener el numer de filas del resultado de la sentencia sql
*@param String $resulset resulset del resultado de la sentencia.
*/
public function numero_filas($resulset){
try{
if($resulset){
return $resulset->rowCount();
}else{
return false;
}
}catch(Exception $e){
error_log($e->getMessage()." Error al contar los datos sql : ".$this->sql."funcion numero_filas -> @param ".$resulset,3,"errorlog/Db_log.log"); }
}
/**
*Inicia una trasaccion
**/
public function startTransaction(){
$this->_conect->beginTransaction();
}
/**
* Confirma una trasaccion
**/
public function commit(){
$this->_conect->commit();
}
/**
* Elimina una trasaccion
**/
public function rollBack(){
$this->_conect->rollBack();
}
/**
*Ejecuta una trasaccion
*@param String $sql sentencia a ejecutar en le servidor.
*/
public function exec($sql){ try{
$this->_conect
->exec($sql); }catch (Exception $e){
error_log("Error al ejecutar sql :".$sql."funcion exec",3,"errorlog/Db_log.log"); }
}
/**
*retorna el ultimo id ingresado.
**/
public function lastInsertId(){
return $this->_conect->lastInsertId();
}
/**
* Prepara un a sentencia SQL
*/
public function prepare($sql){
$stmt = $this->_conect->prepare($sql);
return $stmt;
}
}
?>
todo es funcionado , bien lo unico es que no entiendo como recojo la instancia de la clase ya creada. es registry::get() , pero no comprendo el parametro que le deberia pasar.
porque lo coloco asi y me retorna la instancia de Mysql
$x = registry::get('../../includes/DB/config.ini');
saludos