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

invocar una clase en metodo de otra y parametros fijos

Estas en el tema de invocar una clase en metodo de otra y parametros fijos en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Cual es la forma correcta de hacer esto? Quiero usar una clase conección dentro de un metodo de otra clase ( la incluida) y quiero ...
  #1 (permalink)  
Antiguo 08/02/2007, 12:38
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 972
Antigüedad: 19 años, 11 meses
Puntos: 2
invocar una clase en metodo de otra y parametros fijos

Cual es la forma correcta de hacer esto?
Quiero usar una clase conección dentro de un metodo de otra clase ( la incluida) y quiero pasarle parametros fijos que estan en el archivo incluido config.
Admito que debe ser una burrada, pero estoy un poco mareado.

Código PHP:
<?php 
require_once("../datos/clsConnection.php");
require_once(
"../datos/config.php");

class 
Usuarios{
    function 
validar_select (){
        
$objConn=new conectarMySQL($host,$user,$pwd,$bd);
        
    }
    
}
    
?>

Muchas gracias

Última edición por moron; 08/02/2007 a las 12:50
  #2 (permalink)  
Antiguo 08/02/2007, 14:38
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
Re: invocar una clase en metodo de otra y parametros fijos

Tienes de dos sopas, jeje.

La primera opcion, es incluir tu archivo de configuracion dentro de la funcion de tu clase:
Código PHP:
<?php 
require_once("../datos/clsConnection.php");

class 
Usuarios{
    function 
validar_select (){
        require_once(
"../datos/config.php");
        
$objConn=new conectarMySQL($host,$user,$pwd,$bd);
        
    }
    
}
?>
o, crear una clase de registro o configuracion donde puedas obtener el dato (esta forma es mucho mas OOP y lo que yo recomendaria):
Código PHP:
<?php 
require_once("../datos/clsConnection.php");
require_once(
"../datos/clsConfig.php");

class 
Usuarios{
    function 
validar_select (){
        
$cfg Config::getInstance();
        
$host $cfg->host;
        
$user $cfg->user;
        
$pwd $cfg->pwd;
        
$bd $cfg->bd;
        
$objConn=new conectarMySQL($host,$user,$pwd,$bd);
        
    }
    
}
  #3 (permalink)  
Antiguo 08/02/2007, 17:13
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 972
Antigüedad: 19 años, 11 meses
Puntos: 2
Re: invocar una clase en metodo de otra y parametros fijos

me gustó la segunda, podrías darme una noción de como sería la clase config por favor?

muchas gracias desde ya por la respuesta.
saludos
  #4 (permalink)  
Antiguo 08/02/2007, 17:21
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
Re: invocar una clase en metodo de otra y parametros fijos

Pues puede ser tan sencillo o tan complicado como quieras, de forma "sencilla" puedes tener algo asi:
Código PHP:
class Config {
     public 
$host "localhost";
     public 
$user "root";
     public 
$pwd "";
     public 
$db "test";
     private static 
$_instance null;

     public static function 
getInstance() {
           if( 
self::$_instance == null ) {
                 
self::$_instance = new self();
           }
           
           return 
self::$_instance;
     }

Puedes mejorarla/cambiarla etc. como leer los datos desde un XML, o desde un archivo INI, o como Ruby, leerlos desde YML, etc.
  #5 (permalink)  
Antiguo 08/02/2007, 17:23
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 972
Antigüedad: 19 años, 11 meses
Puntos: 2
Re: invocar una clase en metodo de otra y parametros fijos

Te agradezco muchicimo hermano.
saludos.
  #6 (permalink)  
Antiguo 09/02/2007, 13:01
 
Fecha de Ingreso: marzo-2004
Mensajes: 186
Antigüedad: 20 años, 1 mes
Puntos: 0
Re: invocar una clase en metodo de otra y parametros fijos

Muy interesante esto y muy preciso para los que empezamos en esto de lo OO pero si no es mucho molestar GatorV, podrias explicar como funciona extamante tu codigo:

Código PHP:
class Config {
     public 
$host "localhost";
     public 
$user "root";
     public 
$pwd "";
     public 
$db "test";
     private static 
$_instance null;

     public static function 
getInstance() {
           if( 
self::$_instance == null ) {
                 
self::$_instance = new self();
           }
           
           return 
self::$_instance;
     }

no entiendo muy bien como trabaja, hasta donde veo si "self::$_instance == null" etnonces crea un nuevo objeto ? "new self()" disculpa la ignoracion gracias de antemano
__________________
Software a Medida
voip Locutorios
  #7 (permalink)  
Antiguo 09/02/2007, 13:56
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
Re: invocar una clase en metodo de otra y parametros fijos

Utiliza un patron de diseño llamado Singleton, que permite mantener la misma instancia al objeto config durante el tiempo de ejecución del escript.

Si el obgeto no existe o es nullo entonces realiza una instancia a él, de lo contrario retornará la instancia al objeto ya existente.

Con respecto a Selft indica que invoca un metodo o atributo estático dentro de la misma clase (Self) o bien en este caso, realiza una instancia de la clase dentro de la misma.

Sin me equivoqué en algo me corrigen.

salu2.
  #8 (permalink)  
Antiguo 09/02/2007, 14:04
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
Re: invocar una clase en metodo de otra y parametros fijos

Esa clase es una clase MUY generica, lo ideal es que esa clase lea los valores desde un ini o un xml, o ya sea otro array de PHP.

y lo que ves de self::$_instance == null, es el patron Singleton, te recomiendo que le heches una leida.

Saludos
  #9 (permalink)  
Antiguo 09/02/2007, 17:45
 
Fecha de Ingreso: marzo-2004
Mensajes: 186
Antigüedad: 20 años, 1 mes
Puntos: 0
Re: invocar una clase en metodo de otra y parametros fijos

gracias no conocia lo de la clase Singleton, me parece interesante tambien, por otro parte no me parece seguro guardar la info de la BD en un xml o un ini, ya que podrian ser facilmente hallados, bueno lo implemente mas o menos como entendi agradeceria me objetaran mas si estoy siendo muy procedurial,

infobd.php

Código PHP:
<?
    
class Config 
        
{
         public 
$host "localhost";
         public 
$cliente "root";
         public 
$password "654321";
         public 
$db "testeo";

         private static 
$_instance null;

         public static function 
getInstance() 
             {
            if( 
self::$_instance == null 
                {
              
self::$_instance = new self();
               }
           
          return 
self::$_instance;
         }
        }      
?>


conexion.php

Código PHP:
<?
include("infobd.php");

class 
conexion
    
{
        public 
$datos;
        public 
$cliente;
        public 
$password;
        public 
$db;
        
        function 
__construct()
        {
            
$dts Config::getInstance();
            
$host $dts->host;
            
$cliente =$dts->cliente;
            
$password =$dts->password;
            
$db =$dts->db;
            
$this->host$host;
            
$this->cliente=$cliente;
            
$this->password=$password;
            
$this->db=$db;
        }
        
        function 
conectar()
        {

            if (!(
$link mysql_connect($this->host,$this->cliente,$this->password)))
                
                {
                    return 
"Error conectandose a la base de datos.";
                    exit();
                }
            
            if (!
mysql_select_db("$this->db",$link))
                {
                    return 
"Error seleccionando la base de datos.";
                    exit();
                }

        return 
$link;
        }

    }
?>
testeo.php

Código PHP:
<?
include("conexion.php");
$conexion = new conexion();
$conexion->conectar();
?>
Gracias a todos
__________________
Software a Medida
voip Locutorios
  #10 (permalink)  
Antiguo 09/02/2007, 23:11
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
Re: invocar una clase en metodo de otra y parametros fijos

Es bastante seguro guardar tus datos en un XML, o en un INI, si tomas las precauciones necesarias como:

a) Guardarlo fuera del public_html, o el folder que es accesible via web
b) Usar .htaccess para denegar el acceso a ese folder especifico
  #11 (permalink)  
Antiguo 10/02/2007, 13:27
 
Fecha de Ingreso: marzo-2004
Mensajes: 186
Antigüedad: 20 años, 1 mes
Puntos: 0
Re: invocar una clase en metodo de otra y parametros fijos

estuve tratando de mejorar y ampliar la casa que realize, disculparan los errores pero no entiendo muy bien algunas cosas,
Código PHP:
<?
include("infobd.php");

class 
conexion
    
{
        public 
$datos;
        public 
$cliente;
        public 
$password;
        public 
$db;
        
        function 
__construct()
        {
            
$datos Config::getInstance();
            
$this->host$datos->host;
            
$this->cliente=$datos->cliente;
            
$this->password=$datos->password;
            
$this->db=$datos->db;
                                    
        }
                
        function 
conectar()
        {

            if (!(
$link mysql_connect($this->host,$this->cliente,$this->password)))
                
                {
                    return 
"Error conectandose a la base de datos.";
                    exit();
                }
            
            if (!
mysql_select_db("$this->db",$link))
                {
                    return 
"Error seleccionando la base de datos.";
                    exit();
                }

        return 
$link;
        }
        
        function 
insertar()
        {
            
        }
        
        function 
modificar()
        {
            
        }
        
        function 
eliminar_we($tabla,$where,$valor_where)
        {
            
mysql_query("DELETE FROM $tabla WHERE $where = '$valor_where' LIMIT 1");
        }
        
        function 
eliminar($tabla)
        {
            
mysql_query("DELETE FROM $tabla LIMIT 1");
        }
        function 
consultar($select$tabla)
        {
      
            
$this->row mysql_query("SELECT $select FROM $tabla");
            
$this->result mysql_fetch_array($this->row);
              
        }
        function 
consultar_we($select$tabla$where$variable_where)
        {
      
            
$this->row mysql_query("SELECT $select FROM $tabla where $where = '$variable_where' ");
            
$this->result mysql_fetch_array($this->row);
              
        }
        
        
        function 
ver_consulta($datos)
        {
            echo 
$this->result[$datos]; 
        }
        

        
    }
?>
Tengo unas dudas:

Primero que tan cerca estoy de que estoy sea una clase bien echa para crear objetos
segundo , alguien tiene una idea de como puedo armar las funciones de insertar y modificar consultas,

gracias de antemano por sus respuestas a todos
__________________
Software a Medida
voip Locutorios
  #12 (permalink)  
Antiguo 10/02/2007, 14:38
 
Fecha de Ingreso: julio-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.304
Antigüedad: 18 años, 9 meses
Puntos: 6
Re: invocar una clase en metodo de otra y parametros fijos

Quiza te seria util revisar algo hecho (por ejemplo del Zend Framework, mas especificamente sus clases para BD) para ver como estan hechas las cosas o las funcionalidades que tienen.

Por ejemplo cuando haces el metodo consultar_we y pasas como parametros $where,$valor_where, quiza te convendria hacer estos dos un solo parametro y no te limitarias a un solo filtro, como en tu caso

$where = "peliculas = '1' AND accion = '2'";
$db->consultar_we('*', $where);

Para insertar y modificar podrias pasar un vector (como el $_POST) y convertirlo a la cadena SQL con ayuda de implode()


Repito, revisa un codigo que haga lo que desees y fijate sus funcionalidades. Una posibilidad es que saques muchas ideas para tu clase, otra posibilidad es que decidas adoptar la clase que estas revisando y dejar la tuya de lado.

Saludos.
__________________
Federico.

Mi página: www.jourmoly.com.ar
  #13 (permalink)  
Antiguo 10/02/2007, 16:33
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Re: invocar una clase en metodo de otra y parametros fijos

¡¡¡Mis "eyes", mis "eyes"!!! ¡¡¡¡Atributos públicos noooooo!!!!
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
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 09:38.