Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Encapsular referencia externa dentro de objeto PHP5

Estas en el tema de Encapsular referencia externa dentro de objeto PHP5 en el foro de PHP en Foros del Web. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original <?php   class Encapulador   {     private $mysqli     = null ;     private $stmt ...
  #1 (permalink)  
Antiguo 23/03/2014, 12:06
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años, 6 meses
Puntos: 320
Encapsular referencia externa dentro de objeto PHP5

Código PHP:
Ver original
  1. <?php
  2.  class Encapulador
  3.  {
  4.     private $mysqli     = null;
  5.     private $stmt       = null;
  6.     private $oneRef     = 3;
  7.    
  8.     public function __construct()
  9.     {  
  10.         $this->mysqli = new mysqli('localhost', 'root', '', 'prueba'); 
  11.         $this->stmt = $this->mysqli->prepare("SELECT * FROM `items` WHERE `nro-i` = ?;");
  12.         $this->stmt->bind_param('i', $this->oneRef);
  13.     }
  14.    
  15.     public function setVal($val)
  16.     {
  17.         $this->oneRef = $val;
  18.     }
  19.    
  20.     public function execute()
  21.     {
  22.         $this->stmt->execute();
  23.         $registros = $this->stmt->get_result();
  24.         while($registro = $registros->fetch_array(MYSQLI_ASSOC))
  25.             var_dump($registro);
  26.     }
  27.  }
  28.  
  29.     $test = new Encapulador();
  30.    
  31.     $a = 2;
  32.     $test->setVal($a);
  33.     $test->execute();
  34.    
  35.     echo('<hr>');
  36.     $a = 5;
  37.     $test->setVal($a);
  38.     $test->execute();
  39.    
  40.     echo('<hr>');
  41.     $a = 13;
  42.     $test->setVal($a);
  43.     $test->execute();
  44.     echo('<hr>');

EDITO: YA LO SOLUCIONE
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios

Última edición por NSD; 23/03/2014 a las 12:25 Razón: YA LO SOLUCIONE
  #2 (permalink)  
Antiguo 23/03/2014, 15:51
lolainas
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Encapsular referencia externa dentro de objeto PHP5

Código PHP:
Ver original
  1. class Reference {
  2.  
  3.     private $var;
  4.  
  5.     function __construct(&$var) {
  6.         $this->var = &$var;
  7.     }
  8.  
  9.     function execute(\mysqli $link) {
  10.         //return $link->query("SELECT * FROM `items` WHERE `nro-i` = $this->var;")->fetch_all();
  11.         return "SELECT * FROM `items` WHERE `nro-i` = $this->var;";
  12.     }
  13.  
  14. }
  15.  
  16. $db = new mysqli('localhost', 'root', null, 'prueba');
  17. $nro_i = 1;
  18. $ref = new Reference($nro_i);
  19.  
  20. var_dump($ref->execute($db));
  21.  
  22. $nro_i = 4;
  23. var_dump($ref->execute($db));
  24.  
  25. $nro_i = 13;
  26. var_dump($ref->execute($db));
  #3 (permalink)  
Antiguo 23/03/2014, 16:19
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años, 6 meses
Puntos: 320
Respuesta: Encapsular referencia externa dentro de objeto PHP5

hola lolainas ya lo habia solucionado, pero te agradezco el interes.

En si tu solucion no me sirve porque es para una clase que va a manejar a mysqli, esa clase maneja las conexiones a la bd, prepara las sentencias y las ejecuta.
Lo que queria era;
Código PHP:
Ver original
  1. // hacer esto:
  2.     $a = 2;
  3.     $test->setVal($a);
  4.     $test->execute();
  5.    
  6.     echo('<hr>');
  7.     $a = 5;
  8.     $test->execute();
  9.    
  10.     echo('<hr>');
  11.     $a = 13;
  12.     $test->execute();
  13.     echo('<hr>');
  14.  
  15.    // Me diera los mismos resultados que lo que hacia asi:
  16.     $a = 2;
  17.     $test->setVal($a);
  18.     $test->execute();
  19.    
  20.     echo('<hr>');
  21.     $a = 5;
  22.     $test->setVal($a);
  23.     $test->execute();
  24.    
  25.     echo('<hr>');
  26.     $a = 13;
  27.     $test->setVal($a);
  28.     $test->execute();
  29.     echo('<hr>');

Finalmente lo resolví por otro lado.

Saludos.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #4 (permalink)  
Antiguo 23/03/2014, 16:23
lolainas
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Encapsular referencia externa dentro de objeto PHP5

Aaaah vale, osea que vas a reescribir mysqli, eso te lo dejo para ti.

Saludos.

Etiquetas: externa, objeto, php5, referencia, sql, 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 09:05.