Foros del Web » Programando para Internet » PHP »

PHP OO Valor devuelto por campos de array no definidos

Estas en el tema de Valor devuelto por campos de array no definidos en el foro de PHP en Foros del Web. Buenas!! Estoy desarrollando una clase con un atributo array $options en donde se guardan distintas opciones (a modo de Option Key => Option Value). El ...
  #1 (permalink)  
Antiguo 04/10/2011, 09:22
 
Fecha de Ingreso: agosto-2011
Mensajes: 9
Antigüedad: 12 años, 8 meses
Puntos: 1
Pregunta Valor devuelto por campos de array no definidos

Buenas!!

Estoy desarrollando una clase con un atributo array $options en donde se guardan distintas opciones (a modo de Option Key => Option Value).

El problema viene a la hora de crear el método Getter para ese atributo, ya que quiero que devuelva el valor asociado a la key si éste existe o una constante de error si el key no se ha definido.

Por ejemplo, tenemos:
Código PHP:
$options['name'] = "Pepe"
Si tenemos:
Código PHP:
$object->getOption('name'); 
nos debería devolver "Pepe", pero si hiciésemos:
Código PHP:
$object->getOption('coche'); 
nos debería devolver el valor de la constante ERROR (por ejemplo).

Mi duda es ¿cómo saber si una key está definida en un array?

Saludos y gracias de antemano!! ;)
  #2 (permalink)  
Antiguo 04/10/2011, 09:29
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Valor devuelto por campos de array no definidos

Usa array_key_exists()
http://php.net/array_key_exists

Y de verdad, procura investigar antes de indagar, el manual no hace daño.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 04/10/2011, 10:08
 
Fecha de Ingreso: agosto-2011
Mensajes: 9
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: Valor devuelto por campos de array no definidos

Buenas!!

Es que esa función no me acaba de quedar clara. En array_key_exists() pone:
Cita:
5.3.0 Esta función ya no trabaja más con objetos, property_exists() debe ser usado en este caso.
Por lo que no me queda claro si debería ser más bien:
Código PHP:
property_exists('class''options[\'coche\']'
en lugar de:
Código PHP:
property_exists('coche'$this->options
Saludos!!
  #4 (permalink)  
Antiguo 04/10/2011, 10:12
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Valor devuelto por campos de array no definidos

A ver, ¿si entiendes la diferencia entre objetos y arrays?

Una propiedad de un objeto puede ser un array, no veo el problema:
Código PHP:
$this->options = array();

array_key_exists('clave'$this->options); 
Que dicho array esté asignado a una propiedad no le quita cualidades de array, ya que property_exists() sería algo así:
Código PHP:
property_exists('options'$this); 
Hay una gran diferencia, deberías reflexionar.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 04/10/2011, 10:44
 
Fecha de Ingreso: agosto-2011
Mensajes: 9
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: Valor devuelto por campos de array no definidos

Cita:
Iniciado por Tokorinchi Ver Mensaje
Código PHP:
property_exists('coche'$this->options
Ahí quería poner:
Código PHP:
array_key_exists('coche'$this->options
que se me fue la pinza.

Lo que te preguntaba es que si, al ser el array un atributo de un objeto, se busca un key en él en PHP 5.3 con array_key_exists() o con property_exists() (por ser un atributo más que nada). Si tú me dices que se puede hacer con array_key_exists(), pues genial, pero no creo que sea como para que me hables de esa manera (al menos tal y como he entendido tu mensaje). Creo que es una duda comprensible.

Saludos y gracias por la respuesta.
  #6 (permalink)  
Antiguo 04/10/2011, 10:50
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Valor devuelto por campos de array no definidos

Por favor, entiende la diferencia.

Una propiedad de un objeto puede ser un boolean, integer, array o incluso otro objeto.

Si quieres saber si una propiedad existe en un objeto debes usar property_exists().

En cambio si quieres averiguar si existe una clave en determinado array, sin importar si es parte de un objeto o no debes usar array_key_exists().

En tu caso $this->options no es un objeto, por lo tanto property_exists() no sirve, pero si es un array entonces... ¿si entiendes?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 04/10/2011, 11:14
 
Fecha de Ingreso: agosto-2011
Mensajes: 9
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: Valor devuelto por campos de array no definidos

Ok, gracias por la aclaración ;)

Saludos!

Etiquetas: campos
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 23:06.