Foros del Web » Programando para Internet » PHP »

Php poo - pdo

Estas en el tema de Php poo - pdo en el foro de PHP en Foros del Web. Saludos Tengo una duda, no se que mejor forma pueda prepararlo.. tengo una function conexion() la cual tiene esto: $db = new PDO('mysql:host=localhost;dbname=mi_basedatos','mi _usuario','mi_clave'); Pero ...
  #1 (permalink)  
Antiguo 14/02/2011, 15:24
 
Fecha de Ingreso: octubre-2005
Mensajes: 76
Antigüedad: 18 años, 6 meses
Puntos: 5
Php poo - pdo

Saludos

Tengo una duda, no se que mejor forma pueda prepararlo..

tengo una function conexion() la cual tiene esto:
$db = new PDO('mysql:host=localhost;dbname=mi_basedatos','mi _usuario','mi_clave');

Pero lo tengo en un archivo llamado DBManager.php

con un include 'DBManager.php' lo llamo en otro archivo php, el problema es que en este otro archivo busco hacer un query a la bd, ejemp:
$con = new DBManager;

if($con->conexion()==true)
{
$consulta = $db->prepare("SELECT * FROM paises ORDER BY pais") or die("TB[paises] - Hubo un error con la conexion a la tabla");

$consulta->execute();

if (!$consulta)
return false;
else
return true;
}

El problema es que esto no resulta porque este archivo php no reconoce la variable $db porque esta instanciada es en DBManager.php, al que aunque lo estoy cargando con include no lo toma asi.

Los ejemplos de PDO que encuentro siempre apuntan a estar todo el codigo en el mismo archivo y no en partes, ya que deseo dejar en un solo archivo lo del server y basedatos y no estar colocando un $db = new PDO(....) en cada archivo.

De que mejor manera puedo arreglar esto.
Muchas gracias por las opiniones ofrecidas referente al caso.
Saludos.
  #2 (permalink)  
Antiguo 14/02/2011, 15:30
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Php poo - pdo

pues creo que tienes que darnos mas informacion, pero creo que veo cual es el problema, sencillamente el ambito de la funcion que estas trabajando, porque esto tu variable $db nos comentaste que lo tienes en una funcion, entonces que debes hacer o hacer la variable $db global de manera que esta abarque mas que el ambito de la funcion o hacer un retorno de la conexion que tienes en tu funcion, espero que mi comentario te ayude, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #3 (permalink)  
Antiguo 14/02/2011, 15:35
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Php poo - pdo

para que instancias la clase dentro del un archivo donde no la usaras ?..

instancia la clase en el archivo y ya esta

saludos.
  #4 (permalink)  
Antiguo 14/02/2011, 16:14
 
Fecha de Ingreso: octubre-2005
Mensajes: 76
Antigüedad: 18 años, 6 meses
Puntos: 5
Respuesta: Php poo - pdo

voy a ver que puedo hacer con lo que me comentas carlos_belisario.

Hidek eso no me sirve porque si te fijas siempre estaria estableciendo la conexion al servidor y base de datos en todos los archivos y eso es algo que no se hace ni siquiera ya en la programacion estructurada y desde luego que tampoco o menos en la de poo. Si un dia cambio de BD tendria que cambiar el driver pdo en la cabecera de todos los archivos que tengan funciones de conexion a la base de datos y eso es algo que claro no es muy aceptable. Pero se agradece la observacion.
  #5 (permalink)  
Antiguo 14/02/2011, 16:22
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Php poo - pdo

pues para evitarte eso podrias crearte una clase de conexion a la base de datos que extienda directamente de PDO te dejo un link a una que cree con ayuda de compañeros del foro, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #6 (permalink)  
Antiguo 14/02/2011, 16:53
 
Fecha de Ingreso: octubre-2005
Mensajes: 76
Antigüedad: 18 años, 6 meses
Puntos: 5
Respuesta: Php poo - pdo

carlos_belisario puede apreciarse que es algo ciertamente interesante el material que haz creado, creo que puedo aprender buenas cosas de ese material, te agradezco mucho el aporte que subiste a la gran nube para el alcance de muchos, de seguro eres docente y como que se te fue entretenido hacer el tuto, gracias lo voy a leer :)
  #7 (permalink)  
Antiguo 14/02/2011, 18:06
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Php poo - pdo

Cita:
Hidek eso no me sirve porque si te fijas siempre estaria estableciendo la conexion al servidor y base de datos en todos los archivos y eso es algo que no se hace ni siquiera ya en la programacion estructurada y desde luego que tampoco o menos en la de poo. Si un dia cambio de BD tendria que cambiar el driver pdo en la cabecera de todos los archivos que tengan funciones de conexion a la base de datos y eso es algo que claro no es muy aceptable. Pero se agradece la observacion.
para eso puedes usar el patrón de diseño singleton o registry...

saludos.
  #8 (permalink)  
Antiguo 14/02/2011, 20:14
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Php poo - pdo

Cita:
Iniciado por UserCod Ver Mensaje
carlos_belisario puede apreciarse que es algo ciertamente interesante el material que haz creado, creo que puedo aprender buenas cosas de ese material, te agradezco mucho el aporte que subiste a la gran nube para el alcance de muchos, de seguro eres docente y como que se te fue entretenido hacer el tuto, gracias lo voy a leer :)
bueno me gusta compartir los conocimientos ya que mientras los comparto tambien aprendo un poco mas, ademas de que esa clase la logre conjuntamente con un amigo de este foro que me ayudo con mucho de esta, y me alegra que te sea de utilidad,


Cita:
Iniciado por Hidek1 Ver Mensaje
para eso puedes usar el patrón de diseño singleton o registry...

saludos.
añadiendo a lo que indico el amigo Hidek1 en lo que respecta a las clases de conexión no es recomendable usar el singleton ya que limitarias la clase a solo una instancia y hay casos en los que se necesitan mas de una instancia de la clase, es mejor utilizar el registry, esto lo discutian en un post de el foro de Programacion orientada a objetos varios de los compañeros de aca, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #9 (permalink)  
Antiguo 15/02/2011, 01:42
 
Fecha de Ingreso: octubre-2009
Mensajes: 245
Antigüedad: 14 años, 6 meses
Puntos: 17
Respuesta: Php poo - pdo

Código PHP:
Ver original
  1. class DatabaseFactory implements DbFactory_Interface
  2. {  
  3.     public static function create($sIniFile)
  4.     {        
  5.         $config = new ConfigReader($sIniFile);        
  6.         $config_data = $config->getConfig();
  7.         $database_class = key($config_data);
  8.         include($database_class.'.php');
  9.         $db = new $database_class($config);
  10.         Registry::add($sIniFile, $db);      
  11.         return $db;
  12.     }
  13. }
Como comentario aparte, la llama al Registry esta de mas. Es responsabilidad de la aplicación y no de la clase misma pasar los datos al registry ( Grasp patterns )
__________________
Saludos.

Etiquetas: pdo, poo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:11.