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

Novato en POO ayuda :)

Estas en el tema de Novato en POO ayuda :) en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buenas, estoy iniciando en POO y tengo una duda existe alguna otra forma de imprimir valores de una clase q no sea con una funcion ...
  #1 (permalink)  
Antiguo 30/05/2008, 06:17
Avatar de minkweb  
Fecha de Ingreso: septiembre-2005
Mensajes: 443
Antigüedad: 18 años, 8 meses
Puntos: 14
Busqueda Novato en POO ayuda :)

Buenas, estoy iniciando en POO y tengo una duda

existe alguna otra forma de imprimir valores de una clase q no sea con una funcion ejemplo

class yo
{
var edad;

function Imprimir()
{
echo $this -> edad;
}
}

existe una forma q no sea asi? digo q al inicializar el objeto pueda hacer echo a alguna propiedad sin tener q crear una funcion?

gracias de antemano maestros
  #2 (permalink)  
Antiguo 30/05/2008, 07:22
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años
Puntos: 32
Respuesta: Novato en POO ayuda :)

Conceptualmente y usando PHP5 (PHP4 está "deprecated") debería ser así:

Código PHP:
class Persona{
   private 
$edad 23;

   public function 
Imprimir(){
      echo 
$this -> edad;
   }
}

$yo = new Persona();

echo 
$yo
Ahora tu pregunta: los lenguajes 100% POO tienen todos por defecto un método "toString" que sirve para especificar cómo convertirías tu objeto en un String, si por ejemplo lo necesitas imprimir. Aquí tambien juega tu decisión de diseño, definir qué datos de tu objeto lo representan.

Código PHP:
class Persona{
   private 
$nombre;
   private 
$apellido;
   private 
$edad;

   public function 
__construct$nombre$apellido$edad ){
      
$this->nombre $nombre;
      
$this->apellido $apellido;
      
$this->edad     $edad;
   }
   public function 
__toString(){
      return 
$this->nombre $this->apellido;
   }
}

$yo = new Persona"Enrique""Place"34 );

echo 
"mi nombre es " $yo
PD: si trabajas en Java, generalmente se usa mucho obtener un array de objetos y luego agregarlos a un combo de tu interfaz, por lo que no tienes que hacer nada para imprimir sus datos, ya que tomará por defecto los toString de sus objetos, así que se asume que todo objeto tiene que saber siempre cómo convertirse a String.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #3 (permalink)  
Antiguo 30/05/2008, 07:23
Avatar de pablofmorales  
Fecha de Ingreso: abril-2008
Ubicación: Buenos Aires, Argentina, Argentina
Mensajes: 222
Antigüedad: 16 años, 1 mes
Puntos: 37
Respuesta: Novato en POO ayuda :)

Cita:
Iniciado por minkweb Ver Mensaje
Buenas, estoy iniciando en POO y tengo una duda

existe alguna otra forma de imprimir valores de una clase q no sea con una funcion ejemplo

class yo
{
var edad;

function Imprimir()
{
echo $this -> edad;
}
}

existe una forma q no sea asi? digo q al inicializar el objeto pueda hacer echo a alguna propiedad sin tener q crear una funcion?

gracias de antemano maestros

creo que lo que queres hacer es algo asi.

$obj = new Clase();
echo $obj;
// Esto muestra Hola Mundo


Si es esto lo que queres hacer tenes que usar la propiedad __toString

tu clase quedaria asi.
class Clase
{
public function __toString ()
{
return 'hola mundo';
}
}


en esta pagina tenes mas info

http://ar.php.net/manual/es/language.oop5.magic.php
  #4 (permalink)  
Antiguo 30/05/2008, 08:22
Avatar de minkweb  
Fecha de Ingreso: septiembre-2005
Mensajes: 443
Antigüedad: 18 años, 8 meses
Puntos: 14
Respuesta: Novato en POO ayuda :)

A bueno muchas gracias y otra preguntica

yo para dar valor a algun atributo tengo a juro q usar un constructor no puedo hacerlo mediante una funcion sin haber usado el constructor?

ejemplo

Código PHP:
class Yo
{
private 
edad;

private function 
Agregar($valor)
{
$this->edad $valor;
}
}

$persona = new Yo;
$persona->Agregar(20); 
esto es posible o debo agregar un cosntructor a juro?
  #5 (permalink)  
Antiguo 30/05/2008, 08:29
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años
Puntos: 32
Respuesta: Novato en POO ayuda :)

Sí, puedes hacerlo, busca información en google por "los métodos getter y setter" y encontrarás la respuesta

PD: que es "a juro"?
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #6 (permalink)  
Antiguo 30/05/2008, 08:36
Avatar de pablofmorales  
Fecha de Ingreso: abril-2008
Ubicación: Buenos Aires, Argentina, Argentina
Mensajes: 222
Antigüedad: 16 años, 1 mes
Puntos: 37
Respuesta: Novato en POO ayuda :)

Cita:
Iniciado por minkweb Ver Mensaje
A bueno muchas gracias y otra preguntica

yo para dar valor a algun atributo tengo a juro q usar un constructor no puedo hacerlo mediante una funcion sin haber usado el constructor?

ejemplo

Código PHP:
class Yo
{
private 
edad;

private function 
Agregar($valor)
{
$this->edad $valor;
}
}

$persona = new Yo;
$persona->Agregar(20); 
esto es posible o debo agregar un cosntructor a juro?
La propiedad Agregar tendria que ser publica para poder ser accedida desde una instancia.
Aca tenes mas info sobre el alcance

http://ar.php.net/manual/es/language.oop5.visibility.php
  #7 (permalink)  
Antiguo 30/05/2008, 08:36
Avatar de minkweb  
Fecha de Ingreso: septiembre-2005
Mensajes: 443
Antigüedad: 18 años, 8 meses
Puntos: 14
Respuesta: Novato en POO ayuda :)

creo q es "ajuro" mm es como "obligatoriamente"
  #8 (permalink)  
Antiguo 30/05/2008, 11:08
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Novato en POO ayuda :)

claro...

class foo {
var $candy = 'BAR';
}

en PHP5 ... me parece ke con foo::$candy; basta.... aunke con PHP4 una ves ke instancias la clase.... puedes usar.... $o=new foo; print $o->candy; ¡¡y funciona!!!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 30/05/2008, 14:39
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: Novato en POO ayuda :)

Recuerda que en PHP5 ya esta "deprecated" el usar var para declarar las variables.

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




La zona horaria es GMT -6. Ahora son las 13:07.