Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/11/2014, 11:21
Avatar de Djoaq
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?