Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] recorrer un array :privado

Estas en el tema de recorrer un array :privado en el foro de PHP en Foros del Web. Holas a todos! estoy que me introduzco al mundo de POO y necesito ayuda de la inteligencia colectiva XD estoy creando una clase para generar ...
  #1 (permalink)  
Antiguo 14/02/2014, 14:15
 
Fecha de Ingreso: febrero-2014
Mensajes: 2
Antigüedad: 10 años, 2 meses
Puntos: 0
Pregunta recorrer un array :privado

Holas a todos!

estoy que me introduzco al mundo de POO y necesito ayuda de la inteligencia colectiva XD

estoy creando una clase para generar tablas desde un array..

Código PHP:
class Grid{

    private 
$encabezados = array();
    private 
$data = array();

    public function 
__construct($data){
        
$this->data $data;
        
$this->encabezados $this->obtenerEncabezados();
        
    }

    public function 
obtenerEncabezados(){
     
        
$encabezados = array();
        
var_dump($this->data[0]);
        foreach (
$this->data[0] as $key => $useless){
            
$encabezados[$key] = $key;
        }
       
        return 
$encabezados
El problema lo tengo al recorrer el array que es un arreglo del objeto usuario:

Código PHP:
    foreach ($this->data[0] as $key => $useless){
            
$encabezados[$key] = $key;
        } 
He leído que según las buenas practicas, los objeto deben tener los atributos en private y que para accederlos se hace uso de sus respectivos get..:

Código PHP:
class Usuario {

    private 
$_id;
    private 
$_name;
    private 
$_username;
    private 
$_password;

    public function 
get_id() {
        return 
$this->_id;
    } 

y ese es el problema!, cuando declaro los atributos como public todo normal! Se imprime la tabla correctamente, pero cuando esta en private no se muestran...

sospecho que debo hacer uso del metodo get().. algo así:

Código PHP:
foreach ($this->data[0] as $key => $useless){
            
$key Usuario::get_id;
            
$encabezados[$key] = $key;
        } 
es curioso también que cuando hago un var_dump() al array en private lo imprime normal, pero luego, inmediatamente después cuando lo paso por el foreach no me sale nada

object(Usuario)#4 (4) { ["_id":"Usuario":private]=> string(1) "1" ["_name":"Usuario":private]=> string(16) "Freddy Hernández" ....

apelo a esta inmensa fuente de conocimiento para q me puedan ayudar!!!!

muchas gracias de antemano...

saludos!
  #2 (permalink)  
Antiguo 14/02/2014, 14:27
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: recorrer un array :privado

Es un problema conceptual cuando pasas de programación estructurada o procedural a POO: Tienes que entender que si un X valor o conjunto de valores pertenecen a una clase, es la clase la responsable de devolver ese X valor, y no se debe obtenerlos por fuera.
En otras palabras, si quieres un valor o array de valores de un objeto de cierta clase debes programar en la clase los métodos necesarios para recibir como parámetro el array o los valores a buscar, y devolver el resultado esperado.
Nunca debes hacerlo por fuera.

AL introducirte en el territorio de la POO encontrarás muchos problemas, en especial si no lo has estudiado con profesores que te guiaran.
Ten paciencia y sigue preguntando.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 17/02/2014, 08:50
 
Fecha de Ingreso: febrero-2014
Mensajes: 2
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: recorrer un array :privado

gooood, cogi las funciones de la clase grid y las incerté en mi clase usuarios y funko... muchas gracias por tu ayuda Gonzalo!

Etiquetas: poo
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 06:03.