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

como iniciar un constructor con un objeto de otra clase?

Estas en el tema de como iniciar un constructor con un objeto de otra clase? en el foro de Frameworks y PHP orientado a objetos en Foros del Web. EJ Código PHP: require_once  '../../inc/conexion/conexion.php' ;  class  Buscar    {        private  $folio ;     private  $fecha1 ;     private  $fecha2 ;     private  $rut ;          public function  __construct ...
  #1 (permalink)  
Antiguo 07/06/2006, 11:37
Avatar de alvgutierr  
Fecha de Ingreso: mayo-2006
Ubicación: Santiago Chile
Mensajes: 42
Antigüedad: 18 años
Puntos: 0
como iniciar un constructor con un objeto de otra clase?

EJ

Código PHP:
require_once '../../inc/conexion/conexion.php'

class 
Buscar 
 
{   
    private 
$folio;
    private 
$fecha1;
    private 
$fecha2;
    private 
$rut;
    
    public function 
__construct(){
    }
    
    public function 
getFolio(){
        return 
$this->folio;
    }
    
    public function 
setFolio($folio){
        
$this->folio $folio;
    }
        
   public function 
comboFolio(){
    
    
$con=new conexion();//OJO AQUI ESTA MI CONSULTA COMO LO INICO EN EL CONSTRUCTOR para no tener que crearlo cada vez que realice una query??
    
$con->conectar('ingresofondos');
    
$SQL  "select ing_fon_folio from ingfon_ingreso";
    
$con->result($SQL);
    print(
"<select name=\"folio\"  class=\"Estilo20\">");
    print(
"<option value=\"\" selected>Seleccione una opción</option>");
    
$robj=$con->getOdatos();
    while (
$robj->fetchInto($row))
    {
     print (
"<option value='" $row[0] . "'");
     if(
$this->getFolio() == $row[0]){
      print(
"selected");
     }
     print(
" > " $row[0] . "</option>");
    }
    print(
"</select>");
    
$this->setFolio($row[0]);
   } 
Código PHP:
<?php 
require_once 'DB.php';


class 
Conexion
{
    private 
$oDb;    
    private 
$oDatos;
    
    
    function 
getOdb(){
        return 
$this->oDb
    }
    

    function 
getOdatos(){
        return 
$this->oDatos
    }
    
    
    function 
setOdatos($obj){
        
$this->oDatos $obj;
    }
    
    function 
setOdb($obj){
        
$this->oDb $obj;
    }
    

    function 
conectar($bd){
        
PEAR::setErrorHandling(PEAR_ERROR_RETURN"%<br/>\n");
        
//$this->dbh = DB::connect("pgsql://red:[email protected]/$bd");
        
        
$this->oDb = :connect"pgsql://p8:[email protected]/bd");
        if(
DB::isError($this->oDb)){
            
$this->setOdb(NULL);
            echo 
"<br><span class=\"menu1\">Error de conexi&oacute;n a la Base de Datos</span>";
            exit();
        }else{ 
            return 
$this->oDb
        }
    }

    function 
result($consulta){ 
        if(
$this->getOdb() != NULL){
            
$oResult $this->getOdb()->query($consulta);

            if(
DB::isError($oResult)){
                echo 
"<br><span class=\"menu1\">Error en la consulta</span>";    
                echo 
"<br>".$oResult->getUserInfo(); //comentar
                
$this->mailTo(); 
            }elseif(
is_object($oResult)){
                if(
$oResult->numRows() > 0){
                    
$this->setOdatos($oResult);
                }else{
                    
//echo "<br><span class=\"menu1\">La consulta no ha arrojado datos</span>";
                
}
            }
        }else{
            echo 
"<br><span class=\"menu1\"><br>No es posible ejecutar la consulta. La conexi&oacute;n no ha sido creada</span>";
            
$this->mailTo();
        }
    }
    

    function 
desconectar(){
        if(
$this->getOdb() != NULL){
            
$this->oDb->disconnect();
        }else{
            echo 
"<br><span class=\"menu1\"><br>No es posible desconectar la BD. La conexi&oacute;n no ha sido creada</span>";
            
$this->mailTo();
        }
            
    }
    
    function 
mailTo(){
        echo (
'<br><span class="seccionActiva"><u><a href="mailto:[email protected]" >Notifique Aqu&iacute;</a></u></span>');
    }

}
//fin clase
?>
como inicio la clase Buscar con el objeto conexion???

Última edición por alvgutierr; 07/06/2006 a las 11:43
  #2 (permalink)  
Antiguo 07/06/2006, 14:37
 
Fecha de Ingreso: septiembre-2005
Mensajes: 142
Antigüedad: 18 años, 7 meses
Puntos: 3
Deberías ponerlo en el contructor de la clase Buscar. El problema aparece cuando tienes "n" clases que crean objetos de conexion a base de datos eso retrasaria mucho al servidor y entrariamos en una degeneración. Para ello en la clase Conexión deberías implementar el patrón Singleton para que solo te debuelva una instancia del objeto de conexión.
  #3 (permalink)  
Antiguo 07/06/2006, 17:48
Avatar de Hereje  
Fecha de Ingreso: junio-2002
Ubicación: Córdoba, Argentina
Mensajes: 439
Antigüedad: 21 años, 10 meses
Puntos: 2
Hola, por cierto aca puedes ver cómo se implementa el patrón Singleton que nombra Casuis.

Saludos!
__________________
Sergio
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 04:02.