Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

APORTE: clase conectar php con postgres, se reciben sugerencias para mejorarla

Estas en el tema de APORTE: clase conectar php con postgres, se reciben sugerencias para mejorarla en el foro de Frameworks y PHP orientado a objetos en Foros del Web. saludos aca coloque un video de como conectar postgreSQL con php a traves de una clase, Video en youtube se reciben comentarios o sugerencias suerte ...
  #1 (permalink)  
Antiguo 26/03/2010, 09:15
Avatar de wpersei  
Fecha de Ingreso: septiembre-2006
Ubicación: Bogota
Mensajes: 189
Antigüedad: 17 años, 7 meses
Puntos: 1
APORTE: clase conectar php con postgres, se reciben sugerencias para mejorarla

saludos

aca coloque un video de como conectar postgreSQL con php a traves de una clase,
Video en youtube

se reciben comentarios o sugerencias

suerte


aca esta el fuente de la clase saludos

Código PHP:
Ver original
  1. <?php
  2. //clase para conectarse con la base de datos postgreSQL
  3. class conector_pg
  4. {
  5.     var $host;//direccion ip del host donde nos conectamos a la bd
  6.     var $bd;//nombre de la base de datos
  7.     var $usuario;//usuario de conexion
  8.     var $password;//clave del usuario de conexion
  9.         var $link;//almacenamos el link para luego destruirlo
  10.  
  11.         //constructor en el constructor colocamos los datos por defecto, a fin de recibir de manera opcional
  12.     function __construct($host='127.0.0.1', $bd='nomDB', $user='usuario_postgres', $pass='clave')
  13.     {
  14.             //asigno valores para ensamblar el string de conexion
  15.             $this->host=$host;
  16.             $this->bd=$bd;
  17.             $this->usuario=$user;
  18.             $this->password=$pass;
  19.     }
  20.  
  21.         //funcion que ejecuta la consulta en la base de datos
  22.     //en esta funcion envio el sql puede ser insert, update, select
  23.     function consultar($sql)
  24.         {
  25.         //emsamblamos el string de conexion
  26.         $datos_bd="host='$this->host' dbname='$this->bd' user='$this->usuario' password='$this->password'";
  27.         //establecemos el link
  28.         $link=pg_connect($datos_bd);
  29.         //cargamos la variable para el destructor el cual elimina la conexion
  30.         $this->link = $link;
  31.         //ejecutamos la consulta
  32.         $query = pg_query($link,$sql);
  33.         if(!$query) echo $sql;//si no ejecuta la consulta imprimo el sql que llega solo cuando hacemos pruebas
  34.         return $query;
  35.     }
  36.  
  37.         //destructor: aca elimino la conexion con postgres
  38.         function __destruct()
  39.         {
  40.            pg_close($this->link);
  41.         }
  42. }
  43.  
  44. ?>
__________________
www.ogallardo.com - Mi blog

Última edición por wpersei; 26/03/2010 a las 09:30 Razón: agregando fuente
  #2 (permalink)  
Antiguo 26/03/2010, 09:44
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Tema movido desde PHP a PHP orientado a objetos
  #3 (permalink)  
Antiguo 26/03/2010, 12:11
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: APORTE: clase conectar php con postgres, se reciben sugerencias para mejor

Bueno, allá va la primera. Según el mismo manual
Note: In order to maintain backward compatibility with PHP 4, PHP 5 will still accept the use of the keyword var in property declarations instead of (or in addition to) public, protected, or private. However, var is no longer required. In versions of PHP from 5.0 to 5.1.3, the use of var was considered deprecated and would issue an E_STRICT warning, but since PHP 5.1.3 it is no longer deprecated and does not issue the warning.
If you declare a property using var instead of one of public, protected, or private, then PHP 5 will treat the property as if it had been declared as public.

Así que ya q usas php5, utiliza modificadores de acceso
Otra: No veo por ningún lado donde se arma el query
  #4 (permalink)  
Antiguo 26/03/2010, 14:43
Avatar de wpersei  
Fecha de Ingreso: septiembre-2006
Ubicación: Bogota
Mensajes: 189
Antigüedad: 17 años, 7 meses
Puntos: 1
Respuesta: APORTE: clase conectar php con postgres, se reciben sugerencias para mejor

bueno pues en realidad voy a tener en cuenta la nota que sacaste de php lo tendre en cuenta para otra version de la clase, por otra parte en cuanto a lo que dices de que no vez donde armo el query lo hago en el metodo consultar que es quien se encarga de ejecutar las consultas, sin embargo hare un ejemplo implementando la clase y mejorando los resultadosn de consultar

saludos
__________________
www.ogallardo.com - Mi blog
  #5 (permalink)  
Antiguo 26/03/2010, 15:19
atrianaster
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: APORTE: clase conectar php con postgres, se reciben sugerencias para mejor

Verifica la seguridad en cuanto al SQL Injection cada vez que construyas una consulta.

Última edición por atrianaster; 26/03/2010 a las 15:25
  #6 (permalink)  
Antiguo 27/03/2010, 05:48
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Respuesta: APORTE: clase conectar php con postgres, se reciben sugerencias para mejor

Que tal wpersei

Trata de usar un estándar de codificación, como el de Zend.

Particularmente, un estándar de facto en POO dice que las clases inician siempre en mayúsculas, los métodos en minúsculas, y luego "camelcase".

Luego, un tema de diseño: deberías contar con una clase genérica de base de datos y luego diversas clases según el motor de base de datos, así, tu sistema dependerá de la primera y en caso de cambio de motor, esto será transparente para el sistema.

Última sugerencia, aprende a usar UML, es tan necesario como hacer un diagrama DER antes de construir tu base de datos, es la única forma coherente de planificar seriamente las relaciones de tu clase (con todo lo que involucra).

Saludos!



Cita:
Iniciado por wpersei Ver Mensaje
saludos

aca coloque un video de como conectar postgreSQL con php a traves de una clase,
Video en youtube

se reciben comentarios o sugerencias

suerte


aca esta el fuente de la clase saludos

Código PHP:
Ver original
  1. <?php
  2. //clase para conectarse con la base de datos postgreSQL
  3. class conector_pg
  4. {
  5.     var $host;//direccion ip del host donde nos conectamos a la bd
  6.     var $bd;//nombre de la base de datos
  7.     var $usuario;//usuario de conexion
  8.     var $password;//clave del usuario de conexion
  9.         var $link;//almacenamos el link para luego destruirlo
  10.  
  11.         //constructor en el constructor colocamos los datos por defecto, a fin de recibir de manera opcional
  12.     function __construct($host='127.0.0.1', $bd='nomDB', $user='usuario_postgres', $pass='clave')
  13.     {
  14.             //asigno valores para ensamblar el string de conexion
  15.             $this->host=$host;
  16.             $this->bd=$bd;
  17.             $this->usuario=$user;
  18.             $this->password=$pass;
  19.     }
  20.  
  21.         //funcion que ejecuta la consulta en la base de datos
  22.     //en esta funcion envio el sql puede ser insert, update, select
  23.     function consultar($sql)
  24.         {
  25.         //emsamblamos el string de conexion
  26.         $datos_bd="host='$this->host' dbname='$this->bd' user='$this->usuario' password='$this->password'";
  27.         //establecemos el link
  28.         $link=pg_connect($datos_bd);
  29.         //cargamos la variable para el destructor el cual elimina la conexion
  30.         $this->link = $link;
  31.         //ejecutamos la consulta
  32.         $query = pg_query($link,$sql);
  33.         if(!$query) echo $sql;//si no ejecuta la consulta imprimo el sql que llega solo cuando hacemos pruebas
  34.         return $query;
  35.     }
  36.  
  37.         //destructor: aca elimino la conexion con postgres
  38.         function __destruct()
  39.         {
  40.            pg_close($this->link);
  41.         }
  42. }
  43.  
  44. ?>
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #7 (permalink)  
Antiguo 27/03/2010, 09:47
Avatar de wpersei  
Fecha de Ingreso: septiembre-2006
Ubicación: Bogota
Mensajes: 189
Antigüedad: 17 años, 7 meses
Puntos: 1
Respuesta: APORTE: clase conectar php con postgres, se reciben sugerencias para mejor

Cita:
Iniciado por atrianaster Ver Mensaje
Verifica la seguridad en cuanto al SQL Injection cada vez que construyas una consulta.

gracias por tu aporte, en realidad creo que lo tendre en cuenta en el momento en que muestre un ejemplo de como implementar la clase

saludos
__________________
www.ogallardo.com - Mi blog
  #8 (permalink)  
Antiguo 27/03/2010, 10:07
Avatar de wpersei  
Fecha de Ingreso: septiembre-2006
Ubicación: Bogota
Mensajes: 189
Antigüedad: 17 años, 7 meses
Puntos: 1
Respuesta: APORTE: clase conectar php con postgres, se reciben sugerencias para mejor

Cita:
Iniciado por enriqueplace Ver Mensaje
Que tal wpersei

Trata de usar un estándar de codificación, como el de Zend.

Particularmente, un estándar de facto en POO dice que las clases inician siempre en mayúsculas, los métodos en minúsculas, y luego "camelcase".

Luego, un tema de diseño: deberías contar con una clase genérica de base de datos y luego diversas clases según el motor de base de datos, así, tu sistema dependerá de la primera y en caso de cambio de motor, esto será transparente para el sistema.

Última sugerencia, aprende a usar UML, es tan necesario como hacer un diagrama DER antes de construir tu base de datos, es la única forma coherente de planificar seriamente las relaciones de tu clase (con todo lo que involucra).

Saludos!
Gracias por el aporte,

voy a tenerlo en cuenta para la nueva versión utilizar el camelCase y consolidare la funcionalidad en una clase principal, en la que le pueda indicar mi motor de base de datos y me haga la gestión, en cuanto a UML y el diagrama entidad relación, en este caso de la implementación de la clase de la base de datos, considero que es algo que depende mucho de quien utilice la clase y modele su base de datos, sin embargo lo tendré muy en cuenta para la documentación del ejemplo de implementación de la clase

saludos y mucha suerte

Cita:
Nota: esta clase es para uso de aplicaciones pequeñas o muy casuales, en realidad recomendaria el uso de un DBAL como doctrine para proyectos mas grandes
__________________
www.ogallardo.com - Mi blog
  #9 (permalink)  
Antiguo 27/03/2010, 10:19
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Respuesta: APORTE: clase conectar php con postgres, se reciben sugerencias para mejor

Cita:
en cuanto a UML y el diagrama entidad relación, en este caso de la implementación de la clase de la base de datos, considero que es algo que depende mucho de quien utilice la clase y modele su base de datos,
¿Algo tan genérico como la persistencia en una base de datos? No tiene sentido reinventar la rueda, si quieres hacer un diseño propio y unas clases de persistencia "simples", como mínimo deberías tener una clase Database (o nombre similar) y esta usar clases específicas de persistencia, como ser MySQL, PostgreSQL, etc.

No es para nada estratégico usar en un sistema una clase específica para un motor de base de datos... ni bien tengas la necesidad de cambiar de motor, tendrás que modificar todo el sistema.

Cita:
sin embargo lo tendré muy en cuenta para la documentación del ejemplo de implementación de la clase
UML, más allá de servir de documentación post-desarrollo, cumple un rol fundamental en el diseño pre-desarrollo... de ahí mi indicación de que lo uses, antes de desarrollar, no después (cuando generalmente no se usa).

Saludos!
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #10 (permalink)  
Antiguo 27/03/2010, 15:39
atrianaster
Invitado
 
Mensajes: n/a
Puntos:
Información Respuesta: APORTE: clase conectar php con postgres, se reciben sugerencias para mejor

PDO (PHP Data Objects) es una extensión nativa de PHP5, consiste en una interface uniforme para acceder a varias bases de datos. PDO provee una capa de abstracción de acceso a bases de datos (BD), que permite al desarrollador abstraerse de la BD de una aplicación. Así, si en alguna fase de desarrollo del proyecto se necesita cambiar de BD, esto no afectaría la lógica de la aplicación.

Aunque lo mejor seria que no dependas de una implementación concreta ya que estarías violando una premisa del diseño orientado a objetos. Te recomiendo que crees tú propia clase database con métodos que utilicen la lógica de PDO (reutilización de código). De esta forma tu lógica dependerá de la clase database y no de PDO específicamente. Seria ya un nivel más de abstracción ya que te abstraes de la base de datos y de la PDO.

Última edición por atrianaster; 27/03/2010 a las 15:46
  #11 (permalink)  
Antiguo 27/03/2010, 18:59
Avatar de wpersei  
Fecha de Ingreso: septiembre-2006
Ubicación: Bogota
Mensajes: 189
Antigüedad: 17 años, 7 meses
Puntos: 1
Respuesta: APORTE: clase conectar php con postgres, se reciben sugerencias para mejor

Cita:
Iniciado por atrianaster Ver Mensaje
PDO (PHP Data Objects) es una extensión nativa de PHP5, consiste en una interface uniforme para acceder a varias bases de datos. PDO provee una capa de abstracción de acceso a bases de datos (BD), que permite al desarrollador abstraerse de la BD de una aplicación. Así, si en alguna fase de desarrollo del proyecto se necesita cambiar de BD, esto no afectaría la lógica de la aplicación.

Aunque lo mejor seria que no dependas de una implementación concreta ya que estarías violando una premisa del diseño orientado a objetos. Te recomiendo que crees tú propia clase database con métodos que utilicen la lógica de PDO (reutilización de código). De esta forma tu lógica dependerá de la clase database y no de PDO específicamente. Seria ya un nivel más de abstracción ya que te abstraes de la base de datos y de la PDO.
me parece bastante interesante tu comentario, sin embargo me pregunto como hacer para tener en cuenta factores de los PDO como archivos de estructuras o métodos para las respectivas consultas, creo que de todas formas habría que basarse mucho en su forma de trabajar

saludos y gracias por comentar
__________________
www.ogallardo.com - Mi blog
  #12 (permalink)  
Antiguo 28/03/2010, 00:02
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: APORTE: clase conectar php con postgres, se reciben sugerencias para mejor

En el Manual de PHP puedes ver todos los métodos que expone PDO así como sus funciones y ejemplos de como trabajar.

Opino al igual que atrianaster, es mejor que uses PDO directamente ya que te brinda muchisima flexibilidad.

Saludos.
  #13 (permalink)  
Antiguo 10/07/2015, 08:03
 
Fecha de Ingreso: julio-2015
Mensajes: 1
Antigüedad: 8 años, 9 meses
Puntos: 0
Respuesta: APORTE: clase conectar php con postgres, se reciben sugerencias para mejor

hola disculpa hice el código de la conexión a la base de datos y no me indica nada si tengo errores o se conecta me sale la pantalla en blanco en localhost si me pueden ayudar

Etiquetas: clase, php, sugerencias, postgresql, aportes
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 17:51.