Ayuda PHP

charl1

Buenas,

Necesito sacar datos de un objeto metido en un array:

orla Object
(
[background:orla:private] => 1
[curso:orla:private] => 1
[titulo:orla:private] => 2
[personas:orla:private] => Array
(
[0] => persona Object
(
[nombre:persona:private] => 2
[apellido1:persona:private] => 3
[apellido2:persona:private] => 4
[tipo:persona:private] => Alumno
[urlFoto:persona:private] => img/cloud.png
)

        [1] => persona Object
            (
                [nombre:persona:private] => 214
                [apellido1:persona:private] => 1244
                [apellido2:persona:private] => 124124
                [tipo:persona:private] => Alumno
                [urlFoto:persona:private] => img/gear.png
            )

    )

)

Necesito recorrer el objeto personas del array $orla.

He probado $orla['personas'] pero no es correcto y ahora no caigo en como hacer para recorrer esto..

Alguna ayuda?

B

no puedes acceder a una variable miembro privada desde fuera, ese objeto debe de tener un método público que te permita acceder a las mismas tipo getPersonas.

charl1

Gracias he conseguido hacer el siguiente paso, hacer el metodo getPersonas y sacar la persona pero ahora sigo teniendo el mismo problema no acabo de caer en como sacar en este caso nombre, apellidos,etc..

Array
(
[0] => persona Object
(
[nombre:persona:private] => 3
[apellido1:persona:private] => 4
[apellido2:persona:private] => 5
[tipo:persona:private] => Alumno
[urlFoto:persona:private] => img/cloud.png
)

)

1 respuesta
B

#3 Es lo mismo, el objeto persona también debe tener un método público para sacar datos si todas son privadas.

charl1

Los tengo, pero no se como relacionarlos, tengo dos clases cmo has podido observar, orla y persona, orla llama a persona y en cada una tiene sus getVariable de sus atributos privados.

Entiendo que debo sacar el nombre en la clase orla, ya que hago el require_once de ésta, pero no se como retornarla en la clase getPersona, debe ser una chorrada, pero se me escapa.

B

Si eres fan de los getters/setters puedes crear uno por cada variable en el objeto persona

public function getNombre{

return $this->nombre;

}

Luego puedes acceder con:

foreach($personas as $persona){

loquesea $persona->getNombre();

}

Otra opción es usar un metodo tipo getInfo() en el objeto persona y que te devuelva toda la info de persona.

Para rizar el rizo puedes decalrar el objeto personas con Iterator y el foreach de forma transparente recorrerá el array de objetos persona.

charl1

Al estar aprendiendo, me indican que todo con set/get, no se si es un estandar o no.

Ya lo he sacado, el fallo lo tenia en confiar en el IDE, al hacer el require aunque tenga la funcion disponible no sale en ctrl+space jajaja y por no probar...pff

Muchas gracias.

Usuarios habituales