Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP OO compartir atributos entre metodos de clase en php

Estas en el tema de compartir atributos entre metodos de clase en php en el foro de PHP en Foros del Web. Hola a todos , estoy empezando con la POO en general y en este caso con php . El caso es que tengo un modelo ...
  #1 (permalink)  
Antiguo 15/11/2014, 11:21
Avatar de Djoaq  
Fecha de Ingreso: septiembre-2012
Ubicación: Barcelona
Mensajes: 271
Antigüedad: 12 años, 1 mes
Puntos: 38
compartir atributos entre metodos de clase en php

Hola a todos , estoy empezando con la POO en general y en este caso con php .

El caso es que tengo un modelo que tiene un metodo que hace una consulta en la BD y devuelve un un array con los datos a un controller .

Hasta aquí todo Ok !
Código PHP:
final class mi_clase_modelo extends otra_clase
{
  public function 
get_resultados()#primer metodo que instancio
  
{
     
$result $this->_db->query('SELECT * FROM 
      tabla where col ="cond" '
); 
     
$datos $result->fetch_all(MYSQLI_ASSOC);
       
       
$this->metodo_ejemplo($datos);
       
$this->temp_datos_bd($datos,"guardar");
  }
  public function 
metodo_ejemplo($result)
  {
    
#Trabajamos los datos y devuelvo al controller
    
return $mi_arr;
  }
  public function 
temp_datos_bd($op,$resulset)
  {

    if (
$op=="guardar")
    {
      
$resulset_guardado $resulset;
    }
    elseif (
$op=="recuperar")
    {
      return 
$resulset_guardado[$resulset];
    }
    
  }
  public function 
otro_metodo()
  {
    
$bd $this->temp_datos_bd("recuperar",15);
    
## pido al metodo temp_datos_bd que devuelva el indice 15 del la matriz
    ## de resulset
    
var_dump($db);
    
## pero me falla el ámbito  del atributo:
    
NoticeUndefined variableresulset_guardado 
  

El caso es mi clase tiene muchos otros métodos para realizar diferentes acciones , y en un momento dado , necesito volver a consultar algún dato en BD .

Pero claro , pienso que si mi atributo $datos del metodo get_resultados ya contiene todo el resulset ... porque voy a hacer otra consulta en bd ... ??

Así que intente crear un método que reciba el resulset y lo mantenga , para cuando necesite consultar algún otro dato de la consulta que ya hice en bd .

La verdad es que he probado declarando un atributo publico en la clase ... pero no se sobre-escribe..

estoy pensando en variables globales... o quizás sea un atributo static pq no va a cambiar...Alguna idea?
  #2 (permalink)  
Antiguo 15/11/2014, 12:19
Avatar de Djoaq  
Fecha de Ingreso: septiembre-2012
Ubicación: Barcelona
Mensajes: 271
Antigüedad: 12 años, 1 mes
Puntos: 38
Respuesta: compartir atributos entre metodos de clase en php

Me respondo a mi mismo , el problema no era el ámbito del atributo ... sino que instanciaba a métodos de la clase directamente.. y no me dí cuenta..

Hice un constructor en donde cadavez que se instancia a al modelo este crea una "copia en memoria del resulset!"

Código PHP:
Ver original
  1. class slider_ppal_Modelo extends Modelo
  2. {
  3.  
  4.   function __construct() {
  5.       parent::__construct();
  6.       $datos = $this->get_datos();
  7.       $this->temp_datos_bd($op="guardar",$datos);  
  8.    } ...

Un saludo!!

Etiquetas: atributos, clase, metodos, select, sql, tabla, variable
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 14:11.