Foros del Web » Programando para Internet » PHP »

PHP OO duda con objetos y version de php

Estas en el tema de duda con objetos y version de php en el foro de PHP en Foros del Web. El problema es que cuando hago este llamado Código PHP: $xmlasstr  =  $this -> _convertparamstosxoxml ( $candidate -> _parameters );  $candidate->_parameters me vuelve vacio, pero ...
  #1 (permalink)  
Antiguo 16/05/2011, 11:55
 
Fecha de Ingreso: abril-2008
Mensajes: 435
Antigüedad: 16 años, 6 meses
Puntos: 10
duda con objetos y version de php

El problema es que cuando hago este llamado

Código PHP:
$xmlasstr $this->_convertparamstosxoxml($candidate->_parameters); 
$candidate->_parameters me vuelve vacio, pero si hago un print_r de $candidate devuelve lo siguiente
Código PHP:
 [_parameters:protected] => Array
        (
            [
key] => SimpleXMLElement Object
                
(
                    [
0] => searchresult
                
)

            [
results_text] => SimpleXMLElement Object
                
(
                    [
0] => Search results for : 
                )

            [
no_results_text] => SimpleXMLElement Object
                
(
                    [
0] => Leider nichts gefundenbitte versuche es noch einmal mit einem anderen Suchwort.
                )

            [
next_button_text] => SimpleXMLElement Object
                
(
                    [
0] => Next
                
)

            [
previous_button_text] => SimpleXMLElement Object
                
(
                    [
0] => Previous
                
)
    ) 
lo interesante es que este codigo funciona bien en un server con la version 5.2.10 de php y el objeto vuelve vacio en un server con la version 5.1.6

eso tiene algo que ver? de no ser asi que podra ser?

saludos
  #2 (permalink)  
Antiguo 16/05/2011, 12: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: duda con objetos y version de php

Es normal, ya que la visibilidad de la variable es protected, por lo mismo no puedes acceder a ella desde fuera del objeto, necesitas un getter en la clase para poder leer dicha variable.

Te invito a leer el manual de SimpleXML, ahí listan los métodos que debes usar.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 16/05/2011, 12:10
 
Fecha de Ingreso: abril-2008
Mensajes: 435
Antigüedad: 16 años, 6 meses
Puntos: 10
Respuesta: duda con objetos y version de php

si eso lo entiendo, pero..... la pregunta es porque el codigo funciona perfectamente en otros 3 servidores.
  #4 (permalink)  
Antiguo 16/05/2011, 12:37
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: duda con objetos y version de php

Cita:
Iniciado por Adell Ver Mensaje
si eso lo entiendo, pero..... la pregunta es porque el codigo funciona perfectamente en otros 3 servidores.
Es buena pregunta, y honestamente deberías entender que no traemos el manual en la cabeza.

Mucho menos conocemos a perfección las diferencias entre versiones, te invito a investigar por ti mismo en el manual.

Si encuentras algo nos dices.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 16/05/2011, 15:52
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 17 años, 1 mes
Puntos: 80
Respuesta: duda con objetos y version de php

http://www.php.net/manual/es/simplexml.requirements.php

Instalación

Esta extensión está habilitada por defecto. Se puede inhabilitar usando la siguiente opción al momento de compilar: --disable-simplexml

Nota: Para versiones anteriores a PHP 5.1.2, es necesario usar --enable-simplexml para activar esta extensión.
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp
  #6 (permalink)  
Antiguo 17/05/2011, 06:39
 
Fecha de Ingreso: abril-2008
Mensajes: 435
Antigüedad: 16 años, 6 meses
Puntos: 10
Respuesta: duda con objetos y version de php

Lo interesante de todo esto es que tengo enabled simpleXML, XMLreader, XMLwriter y libXML, todas las configuraciones de servidores estan con las mismas opciones habilitadas respecto al XML, ciertamente cambiando el ambito de la variable a public se arregla aun asi, no es la opcion mas correcta y ademas la curiosidad de porque en uno funciona y en otro no me mata

saludos
  #7 (permalink)  
Antiguo 17/05/2011, 06:47
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: duda con objetos y version de php

Que tal Adell,

$candidate es una instancia de que clase ?
__________________
http://es.phptherightway.com/
thats us riders :)
  #8 (permalink)  
Antiguo 17/05/2011, 07:26
 
Fecha de Ingreso: abril-2008
Mensajes: 435
Antigüedad: 16 años, 6 meses
Puntos: 10
Respuesta: duda con objetos y version de php

Que tal,
$candidate es una instancia de una clase que llamo placeholder, a su vez esta clase hereda de otra llamada abstract y es ahi donde se encuentra la propiedad _parameters que esta como protected
  #9 (permalink)  
Antiguo 17/05/2011, 07:35
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: duda con objetos y version de php

ok, podes postear la implementación de __get ?
__________________
http://es.phptherightway.com/
thats us riders :)
  #10 (permalink)  
Antiguo 17/05/2011, 07:50
 
Fecha de Ingreso: abril-2008
Mensajes: 435
Antigüedad: 16 años, 6 meses
Puntos: 10
Respuesta: duda con objetos y version de php

solamente se le esta haciendo un $candidate->_parameters, estaba implementado asi, lo extraño es que funciona en todos los servidores pero en este no, si bien la implementacion NO es la correcta ya que deberia tener un getter.

es extraño, estuve investigando por las versiones de php pero de momento no encontre nada

saludos
  #11 (permalink)  
Antiguo 17/05/2011, 07:56
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: duda con objetos y version de php

A ver, si la propiedad es protected y la intentas acceder directamente te va a tirar un Fatal Error si esto no sucede y te muestra el valor de la propiedad, es porque en algún lugar esta declarado el método mágico __get, estas seguro que no hay un public function __get en placeholder o alguna de las clases padre ?
__________________
http://es.phptherightway.com/
thats us riders :)
  #12 (permalink)  
Antiguo 17/05/2011, 08:03
 
Fecha de Ingreso: abril-2008
Mensajes: 435
Antigüedad: 16 años, 6 meses
Puntos: 10
Respuesta: duda con objetos y version de php

Código PHP:
public function __get($name)

    {

        return ( isset(
$this->_parameters[$name]) ) ? $this->_parameters[$name] : FALSE;

    } 
cierto....
  #13 (permalink)  
Antiguo 17/05/2011, 08:34
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: duda con objetos y version de php

No se cual es el error, pero esta haciendo lo correcto, ya que _parameters no existe como clave del array, es mas eso debería hace mas allá de la versión de PHP, estas seguro que en otra versión te imprime algo ?, para acceder a los datos deberías hacer:

Código PHP:
Ver original
  1. print_r($candidate->key);
  2. print_r($candidate->results_text);
  3. print_r($candidate->no_results_text);
__________________
http://es.phptherightway.com/
thats us riders :)

Etiquetas: objetos
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 10:44.