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

Clase Conexion

Estas en el tema de Clase Conexion en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buenas, Bueno, ante de nada decir que me he iniciado en el aprendizaje de POO en PHP, que ya va siendo hora Estoy muy verde, ...
  #1 (permalink)  
Antiguo 16/10/2009, 04:27
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 6 meses
Puntos: 74
Pregunta Clase Conexion

Buenas,

Bueno, ante de nada decir que me he iniciado en el aprendizaje de POO en PHP, que ya va siendo hora

Estoy muy verde, solo me he leido un par de manuales por ahora... Así que he decidido crear una clase que contenga los datos de conexión, para así ver si me he enterado de algo.

Bueno, lo que me gustaria saber, es si esta clase esta bien realizada, si le falta algo o si le sobra algo, etc.

Código Clase Conexion:
Ver original
  1. <?php
  2.  
  3. class ConexionBD {
  4.     var $conexionBD;
  5.     function setConexionBD($conexionBD = "Conexión con la base de datos")
  6.     {
  7.         $this->conexionBD = $conexionBD;
  8.     }
  9.     function getConexionBD()
  10.     {
  11.         return $this->conexionBD;
  12.     }
  13.     function Conexion()
  14.     {
  15.         global $conexion;
  16.         $hostname = "localhost";
  17.         $database = "deffer";
  18.         $username = "root";
  19.         $password = "12345";
  20.         $conexion = mysql_connect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR);
  21.          mysql_select_db($database, $conexion);
  22.     }
  23. }
  24.  
  25. $conexion_bd = new ConexionBD();
  26. $conexion_bd->setConexionBD("Conexión con la base de datos");
  27. $conexion_bd->Conexion();
  28.  
  29.  
  30. ?>

Personalmente pienso que ¿no tiene sentido?, ¿que esa no es la manera correcta de hacerla?

Es que quiero que me aconsejeis un poco, para asi ver si realmente estoy aprendiendome bien "los conceptos" o por el contrario...

Muchas gracias desde ya,
  #2 (permalink)  
Antiguo 16/10/2009, 08:49
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Clase Conexion

no entiendo cual es la meta de tu clase, y pues aplicando "los conceptos" depende de la meta que busques, de entrada el código que pones, tu clase lo único que hace es crear una variable $conexion global al llamar al método conexion, lo cual es incorrecto en POO, no debe de haber variables globales en lo minimo, haces el código más complicado de lo que puede ser.

Personalmente creo que no se deberían ya hacer clases así, hay muchas herramientas ya probadas para manejar esto, como PDO que es nativo de PHP, y mejor concentrarte en aplicar bien los conceptos al diseñar un sistema.

Saludos.
  #3 (permalink)  
Antiguo 17/10/2009, 09:31
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 6 meses
Puntos: 74
Respuesta: Clase Conexion

Buenas,

Claro, por eso decidí venir aquí a que me orientaran y aconsejaran, ya que, como dije, considero que esto no es una "clase"... Resulta más facila crear una función y listo.

Como dije, solo me habia leido un par de manuales, y en ese manual, vi un ejemplo, que es este:

Código ejemplo:
Ver original
  1. <?php
  2.  
  3. class PaginaWeb {
  4.     var $titulo;
  5.     function setTitulo($titulo = "Titulito")
  6.     {
  7.         $this->titulo = $titulo;
  8.     }
  9.     function getTitulo()
  10.     {
  11.         return $this->titulo;
  12.     }
  13.     function cabecera()
  14.     {
  15.         echo("<html><head><title>");
  16.         echo $this->titulo;
  17.         echo("</title></head><body>");
  18.     }
  19.     function cuerpo()
  20.     {
  21.         echo ("Este es el cuerpo de la página web");
  22.     }
  23.     function pie()
  24.     {
  25.         echo ("<br>Copyright 2009</body></html>");
  26.     }
  27.     function mostrar_pagina()
  28.     {
  29.         echo $this->cabecera();
  30.         echo $this->cuerpo();
  31.         echo $this->pie();
  32.     }
  33. }
  34.  
  35.  
  36. class pagina_Web_formulario extends PaginaWeb {
  37.     function formulario_inicio($accion)
  38.     {
  39.         echo ("<form action=\"$accion\">");
  40.     }
  41.     function formulario_fin()
  42.     {
  43.         echo ("</form>");
  44.     }
  45.     function formulario_caja_texto($nombre)
  46.     {
  47.         echo ("$nombre <input type=\"text\" name=\"$nombre\">");
  48.     }
  49.     function formulario_boton()
  50.     {
  51.         echo ("<input type=\"submit\" name=\"Submit\" value=\"Enviar\">");
  52.     }
  53.     function mostrar_pagina()
  54.     {
  55.         $this->cabecera();
  56.         $this->cuerpo();
  57.         $this->formulario_inicio("index.php");
  58.         $this->formulario_caja_texto("Nombre");
  59.         $this->formulario_boton();
  60.         $this->formulario_fin();
  61.         $this->pie();
  62.     }
  63. }
  64. $formulario = new pagina_Web_formulario("Página con formulario");
  65. $formulario->mostrar_pagina();
  66.  
  67. }

Entonces, es base a ese ejemplo (como se puede observar) cree esa supuesta clase

Que por cierto, ¿ese ejemplo esta bien o también esta mal?

Bueno, eso es todo, gracias y como no, voy aprender POO, espero que el proximo mensaje sea mejor
  #4 (permalink)  
Antiguo 18/10/2009, 06:40
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años
Puntos: 32
Respuesta: Clase Conexion

Lo que sería interesante es que no todos intenten hacer OTRA clase de persistencia, más, sin buscar primero en el foro que ya existen miles de intentos.

Si cada uno que inicia en POO hace una clase de persistencia, y la hace mal, y sin aprender de otros, esto es terriblemente reiterativo y aburrido

Revisa el foro y busca ejemplos sobre el tema que hay cientos.

Saludos
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #5 (permalink)  
Antiguo 18/10/2009, 13:08
Avatar de luckystrikede11  
Fecha de Ingreso: octubre-2009
Ubicación: Concepcion, Chile
Mensajes: 240
Antigüedad: 14 años, 6 meses
Puntos: 17
Respuesta: Clase Conexion

te pueden servir estos ejemplos

en Mysql
Código PHP:
class BD{
    private 
$conexion;
    private 
$total_consultas;
    private 
$consulta;
    var 
$host     'localhost';
    var 
$usuario  'root';
    var 
$password '';
    var 
$basedato 'basedatos';
    
    function 
__construct(){
        if(!isset(
$this->conexion)){
            
$this->conexion = (mysql_connect($this->host,$this->usuario,$this->password));
            
mysql_select_db($this->basedato,$this->conexion);
        }
    }
    function 
consulta($consulta){
        
$this->total_consultas++;
        
$resultado mysql_query($consulta,$this->conexion);
        if(!
$resultado){
            echo 
'MySQL Error: ' mysql_error();
            exit;
        }
        return 
$resultado
    }

en Postgres
Código PHP:
class BD{
    private 
$conexion;
    private 
$total_consultas;
    private 
$consulta;
    var 
$host     'localhost';
    var 
$usuario  'postgres';
    var 
$password 'postgres';
    var 
$basedato 'basededatos';
    var 
$puerto   '5432';
    
    function 
__construct(){
        if(!isset(
$this->conexion)){
            
$this->conexion = (pg_connect('host='.$this->host.' port='.$this->puerto.' dbname='.$this->basedato.' user='.$this->usuario.' password='.$this->password));
        }
    }
    function 
consulta($consulta){
        
$this->total_consultas++;
        
$resultado pg_query($this->conexion,$consulta);
        if(
$resultado){
            return 
$resultado;
        }else return 
false
    } 
y haci se instancia.. (como cualquier objeto)
Código PHP:
$conectar = new BD();
$sql $conectar->consulta("SELECT........."); 
saludos
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 23:21.