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

Metodo __isset

Estas en el tema de Metodo __isset en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buenas, Estoy probando el metodo __isset() y en teoria segun el codigo de abajo se tendria que printar por pantalla hola1234. Porque como uso la ...
  #1 (permalink)  
Antiguo 07/06/2010, 10:06
 
Fecha de Ingreso: noviembre-2007
Mensajes: 471
Antigüedad: 17 años
Puntos: 2
Metodo __isset

Buenas,

Estoy probando el metodo __isset() y en teoria segun el codigo de abajo se tendria que printar por pantalla hola1234.
Porque como uso la funcion isset(), automaticamente se tendria que llamar la funcion __isset() de la clase.
Porque no funciona??????



<?php

class prueba{

public $preuba2="HOLA";

public function __isset($propiedad){

print isset($propiedad);
}


}

$obj = new prueba("hola1234");

isset($obj->preuba2);


?>

Saludos
  #2 (permalink)  
Antiguo 07/06/2010, 10:14
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Metodo __isset

internamente deberías comprobar alguna propiedad..

Código PHP:
function __isset($prop)
{
  return isset(
$this->$prop);

__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 07/06/2010, 11:00
 
Fecha de Ingreso: noviembre-2007
Mensajes: 471
Antigüedad: 17 años
Puntos: 2
Respuesta: Metodo __isset

lo modifique y continua sin funcinar.

<?php

class prueba{

public $preuba2="HOLA";

function __isset($prop){

print isset($this->$prop);
}


}

$obj = new prueba("hola1234");

isset($obj->preuba2);

?>
  #4 (permalink)  
Antiguo 07/06/2010, 11:02
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Tema movido desde PHP a PHP orientado a objetos
  #5 (permalink)  
Antiguo 07/06/2010, 11:06
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Metodo __isset

si no me equivoco, solo funcionaría si la propiedad que intentas comprobar realmente no existe...

y bueno, que sucede si pruebas con una propiedad falsa??

además sería bueno que cambies esta linea
Código PHP:
print isset($this->$prop)? 'existe''no existe'
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 07/06/2010, 12:40
 
Fecha de Ingreso: noviembre-2007
Mensajes: 471
Antigüedad: 17 años
Puntos: 2
Respuesta: Metodo __isset

Buenas,

Si que existe la propiedad, porque si te fijas añadi una funcion construct y me printa el parametro por pantalla, pero la funcion isset no. el problema esta en que no se ejecuta la funcion.

<?php

class prueba{

public $preuba2="HOLA";

function __construct($prop2){

print $prop2;
}

function __isset($prop){

print $prop;
}


}

$obj = new prueba('hola1234');

isset($obj->preuba2);

?>
  #7 (permalink)  
Antiguo 07/06/2010, 12:51
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Metodo __isset

Cita:
Iniciado por pateketrueke Ver Mensaje
[...] solo funcionaría si la propiedad que intentas comprobar realmente no existe [...]
habrás leído bien lo que escribí??

vamos a verlo así:

lo primero que hace la construcción isset() es comprobar que realmente exista o no, la propiedad directamente en el objeto...

si por algún motivo dicha propiedad es definida -como la tienes actualmente- pasa de largo del método mágico __isset() y no lo usa realmente, lo hace directo...

pero si comprueba que dicha propiedad no existe, entonces dispara el método mágico para corroborar dicha expresión...

¿ahora si ha quedado claro?

Edito:
Cita:
Iniciado por Blashak Ver Mensaje
Buenas,

Si que existe la propiedad, porque si te fijas añadi una funcion construct y me printa el parametro por pantalla, pero la funcion isset no. el problema esta en que no se ejecuta la funcion.

[...]
Código PHP:
function __construct($prop2){
// echo $this->preuba2; # ¿no deberia ser asi?
print $prop2;    

en realidad no estas imprimiendo la propiedad, solo el argumento...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 07/06/2010, 16:16
 
Fecha de Ingreso: noviembre-2007
Mensajes: 471
Antigüedad: 17 años
Puntos: 2
Respuesta: Metodo __isset

jajaja, ya lo entendí. lo que pasa que yo pensé que lo que recogía era el argumento de la clase no el argumento del metodo isset.
Muchas gracias

Etiquetas: isset, metodo
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:40.