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

return en contructor

Estas en el tema de return en contructor en el foro de Frameworks y PHP orientado a objetos en Foros del Web. holas quisiera saber si puedo hacer un return en un contructor por ejemplo Código PHP: class  Wawa  {    public function  __construct  (){        $id  =  uniqid ...
  #1 (permalink)  
Antiguo 14/08/2008, 17:06
 
Fecha de Ingreso: julio-2008
Ubicación: México
Mensajes: 61
Antigüedad: 15 años, 9 meses
Puntos: 0
return en contructor

holas quisiera saber si puedo hacer un return en un contructor por ejemplo

Código PHP:
class Wawa {
   public function 
__construct (){
      
$id uniqid('wawa');
      return 
$id;
   }
}

echo new 
Wawa(); 
o como seria la mejor forma de programar esto??? alguna sugerencia?
  #2 (permalink)  
Antiguo 14/08/2008, 17:20
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: return en contructor

Hola libso,

Lo mejor sería que fuera una función estática.

Saludos.
  #3 (permalink)  
Antiguo 14/08/2008, 17:34
 
Fecha de Ingreso: julio-2008
Ubicación: México
Mensajes: 61
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: return en contructor

Cita:
Iniciado por GatorV Ver Mensaje
Hola libso,

Lo mejor sería que fuera una función estática.

Saludos.
gracias GatorV creo que no se pueden hacer constructores estaticos :P
  #4 (permalink)  
Antiguo 14/08/2008, 18:51
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: return en contructor

Cita:
Iniciado por libso Ver Mensaje
gracias GatorV creo que no se pueden hacer constructores estaticos :P
Estimado, los objetos son representaciones de la realidad, más allá de la sintaxis de un lenguaje en particular.

¿Nos puedes explicar por qué necesitas hacer esto con el lenguaje? ¿cual es el contexto? ¿qué es el objeto y qué tiene que hacer?

Ya que -conceptualmente hablando- me parece bastante raro intentar hacer un "constructor estático".
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #5 (permalink)  
Antiguo 15/08/2008, 10:25
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 18 años, 7 meses
Puntos: 55
Respuesta: return en contructor

bueno yo habia caido en este mismo dilema hace uno tiempo atras y descubri q no funciona el return en un constructor
el problema q yo tenia era sin importar si existia mysqli o mysql al hacer
$conexion=new DB();
me devolviese un objeto mysqli o un objeto mysql con las mismas propiedades q mysqli que cree yo pero no funciono
en este caso puntual lo termine resolviendo con singleton quedanto
$conexion=DB::singleton();
pero bueno otro ejemplo podria ser el gestor de imagenes
$imagen=new Imagen()// y devuelva o un GB o un ImagenMagik

pero no funciona :(
a darle con los estaticos :)
__________________
Degiovanni Emilio
developtus.com
  #6 (permalink)  
Antiguo 15/08/2008, 10:38
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: return en contructor

Me parece que en lo que se pierden es que al hacer un "new" estás creando una instancia de una clase, por consiguiente obtienes "el retorno de un objeto"... cómo vas a hacer que el resultado de un new sea el retorno de otra cosa?

Nuevamente, el problema es conceptual y no de lenguaje.

Si quieres crear "otra cosa", crea un método que te devuelve "otra cosa", una instancia o un valor "x".

Pero nada tiene que ver lo que quieren hacer con un constructor de una clase.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #7 (permalink)  
Antiguo 15/08/2008, 19:25
 
Fecha de Ingreso: julio-2008
Ubicación: México
Mensajes: 61
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: return en contructor

si ya me he dado cuenta de que estaba mal mi razonamiento yo necesitaba que me regresara un id una clase y pues puse una varaible que tenga el valor y despues creo una instancia de mi clase y de hay acceso a la variable y listo :P
Código PHP:
class Wawa {
   public 
id;
   public function 
__contruct(){
      
$this->id random();
   }
}
$a = new Wawa();
echo 
$a->id
  #8 (permalink)  
Antiguo 15/08/2008, 23:53
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 18 años, 7 meses
Puntos: 55
Respuesta: return en contructor

esta perfecto lo que dices enrique, es un error conceptual pero estaria bueno que si tiene un return devuelva eso y no un objeto
__________________
Degiovanni Emilio
developtus.com
  #9 (permalink)  
Antiguo 16/08/2008, 06:08
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: return en contructor

Cita:
Iniciado por libso Ver Mensaje
si ya me he dado cuenta de que estaba mal mi razonamiento yo necesitaba que me regresara un id una clase y pues puse una varaible que tenga el valor y despues creo una instancia de mi clase y de hay acceso a la variable y listo :P
Lo que está mal es que quieras pilotear un helicóptero sin haber siquiera leído un manual de vuelo (como mínimo), con solo el manual de piezas y reparación no vas a llegar muy lejos.

Nota: no uses en objetos el término "variables", lo que estás usando son "atributos del objeto".

Tu ejemplo tiene errores, no puedes usar atributos públicos (están prohibidos) y el código no sigue el estándar de PHP.

Código PHP:
class Wawa 
{
   private 
$_id;

   public function 
__contruct()
   {
      
$this->_id rand();
   }
   public function 
getId()
   {
      
retunr $this->_id;
   }
}

$a = new Wawa();
echo 
$a->getId(); 
Posteriormente deberías documentar la clases, atributos y métodos con PHPDoc.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #10 (permalink)  
Antiguo 16/08/2008, 06:13
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: return en contructor

Cita:
Iniciado por emiliodeg Ver Mensaje
esta perfecto lo que dices enrique, es un error conceptual pero estaria bueno que si tiene un return devuelva eso y no un objeto
Desde el punto de vista de la POO y conceptualmente hablando, es un disparate esperar que haga eso.

El "new" devuelve un objeto a partir de una clase. Luego, puedes pedirle cosas al objeto, y usarás un "return" dentro de uno de sus métodos. No tiene ningún sentido hacer un "new" y esperar que devuelva otra cosa que no sea un objeto.

Por favor, lean sobre conceptos, jugar con la sintaxis de un lenguaje no los lleva a ningún lado.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #11 (permalink)  
Antiguo 16/08/2008, 07:51
 
Fecha de Ingreso: julio-2008
Ubicación: México
Mensajes: 61
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: return en contructor

jugar con el lenguaje es bueno asi aprendes xD eso es lo que creo y si tienes razon con lo de "variables" sigo acostumbrado a eso tratare de no equivocarme más pero pues en la pag que pones de estandar de php mira lo que dice
"variable"xD

gracias por las correcciones :)
  #12 (permalink)  
Antiguo 16/08/2008, 08:04
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: return en contructor

Cita:
Iniciado por libso Ver Mensaje
jugar con el lenguaje es bueno asi aprendes xD eso es lo que creo
¿Qué aprendes? Jugar con ladrillos no te asegura que puedas construir un edificio.
Debes capacitarte en los temas para luego "jugar" con conocimientos base.

Parafraseando una conocida frase: "Mil monos golpeando un teclado durante mil años no lograrán construir una clase en POO"

Cita:
Iniciado por libso Ver Mensaje
y si tienes razon con lo de "variables" sigo acostumbrado a eso tratare de no equivocarme más pero pues en la pag que pones de estandar de php mira lo que dice "variable"xD
Sí, lo comenté alguna vez, veo que son varias personas que lo escriben y cometen algunos errores como el que describes. De todas formas este link apunta al documento más completo, pero sigue siendo aún un borrador.

Cita:
gracias por las correcciones :)
De nada, a las órdenes.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #13 (permalink)  
Antiguo 18/08/2008, 08:03
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: return en contructor

¿Sigo diciendo, si lo que quieren es obtener un valor, porque no usan una función estatica?

Código PHP:
class Wawa {
      public static function 
getRandomId() {
            return 
rand();
      }
}

$id Wawa::getRandomId(); 
Saludos.
  #14 (permalink)  
Antiguo 20/08/2008, 15:20
 
Fecha de Ingreso: mayo-2007
Ubicación: Home
Mensajes: 24
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: return en contructor

espero no contestar muy tarde, lo que tu quieres hacer se va poder hacer proximammente en versiones de php y se llama Functors, basicamente son una construcción del lenguaje que nos permite usar objetos como si fueran funciones.

Código PHP:

class Wawa {

   private 
$_id;

   public function 
__construct (){
      
$this->_id uniqid('wawa');
     
//return $id; //NO! , un constructor es simplemente eso , y no regresa nada mas que la instancia creada
   
}
   private function 
__invoke(/*[mixed params]*/){
     
//esta es la forma de implementar functors en php
    
return $this->id// XD
   
}
}

echo 
Wawa(); 
//Devolveria lo que tu pretendes. 
Saludos.
  #15 (permalink)  
Antiguo 20/08/2008, 15:25
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: return en contructor

Gracias Insane, invaluable tu aporte, pero vuelvo a repetir lo que ustedes ya se deben imaginar que diré... eso es terrible chanchada!

PD:
por qué no usarán los objetos para lo que fueron creados, digo yo.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #16 (permalink)  
Antiguo 20/08/2008, 19:32
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 18 años, 7 meses
Puntos: 55
Respuesta: return en contructor

me encanto el __invoke() lo quiero yaaaaaaaa
__________________
Degiovanni Emilio
developtus.com
  #17 (permalink)  
Antiguo 20/08/2008, 22:01
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: return en contructor

Mmm haz probado que al usar invoke llame al constructor?, según lo que veo en la documentación __invoke lo que hace es ejecutar directamente cuando se llama sin pasar por el constructor...
  #18 (permalink)  
Antiguo 21/08/2008, 01:19
 
Fecha de Ingreso: julio-2008
Ubicación: México
Mensajes: 61
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: return en contructor

:O que loco... gracias por el aporte
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 08:01.