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

como recibo un objeto???

Estas en el tema de como recibo un objeto??? en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola, a ver si me hago entender... tengo una aplicación que estoy trabajando con un modelo de 5 niveles... algo más que MVC el asunto ...
  #1 (permalink)  
Antiguo 27/06/2005, 07:58
Avatar de Salome  
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 1.032
Antigüedad: 21 años, 5 meses
Puntos: 1
Exclamación como recibo un objeto???

Hola, a ver si me hago entender...

tengo una aplicación que estoy trabajando con un modelo de 5 niveles... algo más que MVC

el asunto es que yo llego e instancio una clase, y en esta construyo mi objeto.. este objeto debo llamarlo desde otra clase... (el objeto ya construido).. como hago esto???
  #2 (permalink)  
Antiguo 27/06/2005, 08:15
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 22 años, 5 meses
Puntos: 69
podrías poner un ejemplo de código? o al menos un ejemplo de lo que pretendes lograr?
( igualmente, te comento que quizás lo que te sirva, es investigar sobre el Patrón de Diseño Singleton ).
Saludos.
__________________
Tutoriales Photoshop | Web-Studio.com.ar
Artículos PHP | ZonaPHP.com
  #3 (permalink)  
Antiguo 27/06/2005, 08:32
Avatar de Salome  
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 1.032
Antigüedad: 21 años, 5 meses
Puntos: 1
esto esta en un archivo.php
Código PHP:

class CtrlIngresoCliente
{
function 
ingresarCliente()
    {
    
$cliente = new Cliente();
    
$cliente->setCliente($nmcliente$dsnombre);
    }
}

esto esta en otro .php

class Cliente
{

    var 
$nmcliente;
    var 
$dsnombre
        
            function 
getCliente(){
       return 
$nmcliente;
    }
    
    function 
setCliente$nmcliente$dsnombre
             
// acá es donde construyo mi objeto cliente.
    
{
      
$this->$nmcliente $nmcliente;
      
$this->$dsnombre $dsnombre;
    }
}

ahora debo en otro .php recibir mi objeto clientecreado en la clase Cliente() método SetCliente... como lo hago?.. yo tengo ahi un método llamado getCliente.. algo debo hacer con él (estuve mirando alguna documentación de java).... 

Última edición por Salome; 27/06/2005 a las 08:44
  #4 (permalink)  
Antiguo 27/06/2005, 09:50
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 20 años, 6 meses
Puntos: 1
algunas dudas

No estoy seguro de estarte entendiendo completamente, pero a continuación dejo tu código con algunas observaciones:

Código PHP:
class CtrlIngresoCliente
{
function 
ingresarCliente()
    {
    
$cliente = new Cliente();
    
/* las variables nmcliente y dsnombre de donde salen? tal vez se te olvidó pasarlas como argumento
    al método ingresarCliente???? */
    
$cliente->setCliente($nmcliente$dsnombre); 
    }
    
/* no hace falta aqui algo como return $cliente??? y la función no debería especificar que va a retornar una referencia? */
    /* por que si este método queda de esta forma, entonces la variable $cliente será destruida justo después de terminar el método */
}

class 
Cliente
{

    var 
$nmcliente;
    var 
$dsnombre;
        
            function 
getCliente(){
       return 
$nmcliente;
    }
    
    function 
setCliente$nmcliente$dsnombre)
             
// acá es donde construyo mi objeto cliente.
    
{
      
$this->$nmcliente $nmcliente;
      
$this->$dsnombre $dsnombre;
      
      
/* mmmm yo no veo que construyas ningún objeto cliente, el objeto cliente se construye en el método ingresarCliente de tu clase CtrlIngresoCliente
      este método lo unico que hace es asignarle valores a dos variables de nombre dinámico. No estoy seguro que sea "correcto" esto.
      de verdad deseas crear variables dinámicas dentro de un objeto? si es así creo que sería mejor utilizar un arreglo asociativo
      */
    
}

finalmente, no entiendo del todo lo que deseas. Pero si dices que quieres usar el objeto cliente que construyes en otra página php, entonces,
el método ingresarCliente debe guardar, o retornar la variable $cliente en algún lado. Luego puedes guardar los datos en sesión.
para una respuesta mas detallada es necesario mas información sobre como estás utilizando tu clase CtgrlIngresoCliente

saludos
  #5 (permalink)  
Antiguo 27/06/2005, 10:01
Avatar de Salome  
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 1.032
Antigüedad: 21 años, 5 meses
Puntos: 1
mmm ok, acerca de las dudas.. aca va...

Código PHP:
class CtrlIngresoCliente 

function 
ingresarCliente($nmcliente$dsnombre//ok, en ese momento olvide ponerlo en el post, pero si las envio como argumentos 
    

    
$cliente = new Cliente(); 
    
$cliente->setCliente($nmcliente$dsnombre); 
    } 
   
// y bueno acerca del return y eso, es justo lo que necesito saber.. (apenas comienzo con objetos)....


class 
Cliente 


    var 
$nmcliente
    var 
$dsnombre
         
            function 
getCliente(){ 
       return 
$nmcliente
    } 
     
    function 
setCliente$nmcliente$dsnombre
             
// acá es donde construyo mi objeto cliente. 
    

      
$this->$nmcliente $nmcliente
      
$this->$dsnombre $dsnombre
    
// no deseo ingresar variables dinámicas, lo que quiero es crear el objeto cliente.   

    


bueno y como uso mi clase CtrlIngresoCliente; la idea es que en esta clase, controlo lo que recibo y lo que envio a mis funciones q manejan las reglas de negocio.. y a las vistas.

La idea seria que cuando deseo ingresar un cliente, recibo los datos en ingresarCliente (método de CtrlIngresoCliente); y creo mi objeto cliente, ya después de tener creado mi cliente, la idea es que sea enviado este cliente, a un método que esta en otra clase IngresoIntegral() que me va a ingresar los datos a la base de datos...

Última edición por Salome; 27/06/2005 a las 10:09
  #6 (permalink)  
Antiguo 27/06/2005, 10:19
Avatar de Salome  
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 1.032
Antigüedad: 21 años, 5 meses
Puntos: 1
Bueno, entonces como pasaria mi objeto..como parámetro?.. puedo hacerlo en php?
mm bueno, creo que no lo puedo hacer.. ando con php 4.0 no 5.0 :(

Última edición por Salome; 27/06/2005 a las 10:45
  #7 (permalink)  
Antiguo 27/06/2005, 10:35
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 20 años, 6 meses
Puntos: 1
ok, espero poder darme a entender. Para poder comprendernos es necesario que empecemos a usar un vocabulario consistente. Si yo dijo "carro rojo", entiendes perfectamente que por "rojo" me refiero al color. Bueno, esto te lo digo por que considero que estás usando incorrectamente la palabra "Objeto", eso me causo un poco de confusión. El objeto se construye desde el mismo momento que tu mandas llamar new Algo(); sin importar si mandaste llamar más métodos de la clase Algo. Por ello, tu método setCliente() no construye el objeto, solo MODIFICA propiedades del cliente, en este caso al parecer quieres especificar el nombre del cliente y algo más que no se que es. Trata de escribir código que se explique asi mismo. Si una variable va a contener el nombre del cliente, creo que es mejor ponerle $CustomerName o $NombreCliente, que solo $nmcliente, eso pudiera confundir luego con numero de cliente, o no sé. Simplemente mientras mas claro se sea mejores posibilidades hay de que entiendan nuestro código.

Pasando concretamente a tu "problema". Intenta algo como esto:

Código PHP:
<?php
//CustomerLib.php
class ControlIngresoCliente
{
    
    function &
IngresarCliente($NombreCliente$OtraCosaDelCliente//especifico que el método regresa una referencia
    
{
        
$NombreCliente      = (string)$NombreCliente;
        
$OtraCosaDelCliente = (string)$OtraCosaDelCliente;
        
$cliente            = new Cliente(); //construyo el objeto
        
$cliente->setCliente($NombreCliente$OtraCosaDelCliente);  //seteo dos propiedades
        
return $cliente//regreso una referencia al objeto
    
}
}

class 
Cliente
{
    var 
$nombre_cliente;
    var 
$otra_cosa_cliente;
    
    function 
setCliente($NombreCliente$OtraCosaCliente)
    {
        
$this->nombre_cliente    $NombreCliente;
        
$this->otra_cosa_cliente $OtraCosaCliente;
    }

?>

<?php
//AddCustomer.php
require_once 'CustomerLib.php';
session_start();
$ControlIngreoCliente =  new ControlIngresoCliente();
$_SESSION['cliente']  =& $ControlIngresCliente->IngresarCliente('pancho''sadsadsa');
?>

<?php
//AddCustomerProcess.php
require_once 'CustomerLib.php';
session_start();
var_dump($_SESSION['cliente']);
?>
saludos

Última edición por Webstudio; 27/06/2005 a las 10:57 Razón: Le agregué los tags [PHP] para que fuera más legible
  #8 (permalink)  
Antiguo 27/06/2005, 10:40
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 20 años, 6 meses
Puntos: 1
perdón, omití una última parte, y resaltar la sintaxis
Código PHP:
<?php
//CustomerLib.php
class ControlIngresoCliente
{
    
    function &
IngresarCliente($NombreCliente$OtraCosaDelCliente//especifico que el método regresa una referencia
    
{
        
$NombreCliente      = (string)$NombreCliente;
        
$OtraCosaDelCliente = (string)$OtraCosaDelCliente;
        
$cliente            = new Cliente(); //construyo el objeto
        
$cliente->setCliente($NombreCliente$OtraCosaDelCliente);  //seteo dos propiedades
        
return $cliente//regreso una referencia al objeto
    
}
}

class 
Cliente
{
    var 
$nombre_cliente;
    var 
$otra_cosa_cliente;
    
    function 
setCliente($NombreCliente$OtraCosaCliente)
    {
        
$this->nombre_cliente    $NombreCliente;
        
$this->otra_cosa_cliente $OtraCosaCliente;
    }


class 
IngresoIntegral
{
    function 
IngresoCliente($Cliente)
    {
        
//sadsadsadsad
    
}
}

?>

<?php
//AddCustomer.php
require_once 'CustomerLib.php';
session_start();
$ControlIngreoCliente =  new ControlIngresoCliente();
$_SESSION['cliente']  =& $ControlIngresCliente->IngresarCliente('pancho''sadsadsa');
?>

<?php
//AddCustomerProcess.php
require_once 'CustomerLib.php';
session_start();
IngresoIntegral::IngresoCliente($_SESSION['cliente']);
var_dump($_SESSION['cliente']);
?>
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 03:27.