Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] POO Php Ayudita

Estas en el tema de POO Php Ayudita en el foro de PHP en Foros del Web. Hola, recien he empezado a aprender clases en PHP. He hecho una clase, pero me surge una incógnita que no he podido encontrar en ningún ...
  #1 (permalink)  
Antiguo 25/03/2013, 16:33
 
Fecha de Ingreso: abril-2010
Ubicación: Saltillo Mexico
Mensajes: 83
Antigüedad: 14 años
Puntos: 4
Pregunta POO Php Ayudita

Hola, recien he empezado a aprender clases en PHP.

He hecho una clase, pero me surge una incógnita que no he podido encontrar en ningún tutorial entendible a mi nivel jeje

La cuestion es que quiero hacer algo similar a lo que se hace con mysqli
Especificamente es esto:

Código PHP:
$x = new mysqli_connect("host","user","pass","db");

//hasta aquí uso una funcion
$resultado $x->query("SQL");

//y luego para ver el resultado uso otra funcion pero ya almacenada en el resultado.
//es decir que lo que la funcion me regresa es otro objeto.
//pero yo no se hacer eso

$array $resultado->fetch_array(); 
Mi clase es mas o menos así:

Código PHP:

//crear una tabla HTML
$x = new tabla;

//establecer algunos atributos de la tabla
$x->width "100px";

//crear un tr
$tr $x->tr();

//añadirle td al tr
$tr->td("hola");
$tr->td("hola");

//imprimir la tabla
$x->render(); 
espero me puedan sacar de esa duda. Mientras sigo buscando.
Gracias.
  #2 (permalink)  
Antiguo 25/03/2013, 16:37
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 137
Respuesta: POO Php Ayudita

cual es el código de tu clase?
__________________
>> abimaelmartell.com
  #3 (permalink)  
Antiguo 25/03/2013, 18:25
 
Fecha de Ingreso: abril-2010
Ubicación: Saltillo Mexico
Mensajes: 83
Antigüedad: 14 años
Puntos: 4
Respuesta: POO Php Ayudita

Código PHP:
Ver original
  1. class htmlTable{
  2.     var $columnas;
  3.     var $width;
  4.     var $cellpadding;
  5.     var $cellspacing;
  6.     var $border;
  7.     var $align;
  8.     var $id;
  9.     var $name;
  10.     var $class;
  11.     var $style;
  12.     var $head;
  13.     var $jQuery_dataTables;
  14.     private $tr;
  15.     //Abrir la etiqueta <table> y asignar los atributos establecidos.
  16.     private function open(){
  17.         $open = "<table ";
  18.         if(isset($this->width)){ $open .= 'width="'.$this->width.'" '; }
  19.         if(isset($this->align)){ $open .= 'align="'.$this->align.'" '; }
  20.         if(isset($this->border)){ $open .= 'border="'.$this->border.'" '; }
  21.         if(isset($this->cellpadding)){ $open .= 'cellpadding="'.$this->cellpadding.'" '; }
  22.         if(isset($this->cellspacing)){ $open .= 'cellpadding="'.$this->cellspacing.'" '; }
  23.         if(isset($this->id)){ $open .= 'id="'.$this->id.'" '; }
  24.         if(isset($this->class)){ $open .= 'class="'.$this->class.'" '; }
  25.         if(isset($this->name)){ $open .= 'name="'.$this->name.'" '; }
  26.         if(isset($this->style)){ $open .= 'style="'.$this->style.'" '; }
  27.         $open .= ">\r\n";
  28.        
  29.         return $open;
  30.     }
  31.    
  32.     private function head($array){
  33.         $head = "    <thead>\r\n";
  34.         foreach($array as $th){
  35.             $head .= "        <th>".utf8_decode($th)."</th>\r\n";
  36.         }
  37.         $head .= "    </thead>\r\n";
  38.        
  39.         return $head;
  40.     }
  41.    
  42.     //cerrar la etiqueta </table>
  43.     private function close(){ return "</table>"; }
  44.    
  45.     //concatenar las etiquetas generadas
  46.     function render(){
  47.         $render = $this->open();
  48.         $render .= $this->head($this->head);
  49.         $render .= "<tbody>\r\n";
  50.         $render .= $this->tr;
  51.         $render .= "</tbody>\r\n";
  52.         $render .= $this->close();
  53.        
  54.         return $render;
  55.     }

hasta ahí llevo, pero me quedé en eso, pensando en como hacer para poner el tbody.
  #4 (permalink)  
Antiguo 25/03/2013, 19:07
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: POO Php Ayudita

Pues simple, tienes que guardar lo que quieras en una variable que sea de la clase, por ejemplo:
Código PHP:
Ver original
  1. class Foo
  2. {
  3.       private $bar;
  4.  
  5.       public function setBar($bar)
  6.       {
  7.              $this->bar = $bar;
  8.       }
  9.  
  10.       public function getBar()
  11.       {
  12.              return $this->bar;
  13.       }
  14. }
  #5 (permalink)  
Antiguo 25/03/2013, 19:46
 
Fecha de Ingreso: abril-2010
Ubicación: Saltillo Mexico
Mensajes: 83
Antigüedad: 14 años
Puntos: 4
Respuesta: POO Php Ayudita

No logro comprender. ¿De que manera usaría esa class?

$f = new foo

$f->setBar("hola");

$n = $f->getBar();

En $n se almacena "hola", pero lo que yo quiero es que en $n pueda mandar llamar mas funciones.

$n->otraFuncion();

Creo que no logro explicarme.
De todas maneras hice que mi funcion tr() recibiera un array con los td's
pero aun sigo con la duda de como hacer eso.
  #6 (permalink)  
Antiguo 25/03/2013, 20:50
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: POO Php Ayudita

Cita:
Creo que no logro explicarme.
Cita:
La cuestion es que quiero hacer algo similar a lo que se hace con mysqli
Especificamente es esto:
Tipico problema de mezclar peras con manzanas. Mira lo que preguntas y mira con lo que sales (tablas y mysql nada que ver). Yo te recomendaria que hicieras un constructor para forzar la creación de las variables de entrada (ancho, parametros,etc)

En esta pagina creo que encontraras lo que necesitas, no trabajan con tablas pero si paginas web que para efectos practicos se ajusta a lo que necesitas y mas que todo a que entiendas el concepto.

http://www.phpya.com.ar/poo/

Mira el ejemplo de como crean ellos una pagina web con sus cabeceras, su pie y su contenido es muy parecido a lo que quieres hacer pero con tablas, leelo todo que te sera de mucha utilidad.
__________________
Blog de humor http://elcuasatar.net63.net/

Última edición por cuasatar; 25/03/2013 a las 21:02
  #7 (permalink)  
Antiguo 25/03/2013, 21:33
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: POO Php Ayudita

Ah, pues es que eso es muy diferente, más bien tienes que instanciar otra clase y devolverla, ejemplo:
Código PHP:
Ver original
  1. class Clase1
  2. {
  3.       public function bar()
  4.       {
  5.              echo 'bar';
  6.       }
  7. }
  8.  
  9. class Clase2
  10. {
  11.       public function getClass1()
  12.       {
  13.              return new Class1();
  14.       }
  15. }
  16.  
  17. $class = new Class2();
  18. $c = $class->getClass1();
  19. $c->bar();
  #8 (permalink)  
Antiguo 26/03/2013, 23:58
 
Fecha de Ingreso: abril-2010
Ubicación: Saltillo Mexico
Mensajes: 83
Antigüedad: 14 años
Puntos: 4
Respuesta: POO Php Ayudita

Cita:
Iniciado por cuasatar Ver Mensaje
Tipico problema de mezclar peras con manzanas. Mira lo que preguntas y mira con lo que sales (tablas y mysql nada que ver). Yo te recomendaria que hicieras un constructor para forzar la creación de las variables de entrada (ancho, parametros,etc)

En esta pagina creo que encontraras lo que necesitas, no trabajan con tablas pero si paginas web que para efectos practicos se ajusta a lo que necesitas y mas que todo a que entiendas el concepto.

http://www.phpya.com.ar/poo/

Mira el ejemplo de como crean ellos una pagina web con sus cabeceras, su pie y su contenido es muy parecido a lo que quieres hacer pero con tablas, leelo todo que te sera de mucha utilidad.
No, la class de las tablas es una práctica. mi duda es sobre clases, no sobre crear tablas o páginas.
Gracias de todos modos.
  #9 (permalink)  
Antiguo 26/03/2013, 23:59
 
Fecha de Ingreso: abril-2010
Ubicación: Saltillo Mexico
Mensajes: 83
Antigüedad: 14 años
Puntos: 4
Respuesta: POO Php Ayudita

Cita:
Iniciado por GatorV Ver Mensaje
Ah, pues es que eso es muy diferente, más bien tienes que instanciar otra clase y devolverla, ejemplo:
Código PHP:
Ver original
  1. class Clase1
  2. {
  3.       public function bar()
  4.       {
  5.              echo 'bar';
  6.       }
  7. }
  8.  
  9. class Clase2
  10. {
  11.       public function getClass1()
  12.       {
  13.              return new Class1();
  14.       }
  15. }
  16.  
  17. $class = new Class2();
  18. $c = $class->getClass1();
  19. $c->bar();
Gracias, voy a hacer experimentos con esto... es justo mi duda.
  #10 (permalink)  
Antiguo 27/03/2013, 07:14
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: POO Php Ayudita

Cita:
He hecho una clase, pero me surge una incógnita que no he podido encontrar en ningún tutorial entendible a mi nivel jeje
Cita:
No, la class de las tablas es una práctica. mi duda es sobre clases, no sobre crear tablas o páginas.
Gracias de todos modos.
Si te he pasado el enlace no es por el ejercicio de las tablas, o las paginas en si. Como bien colocaste: no he encontrado ningún tutorial entendible a mi nivel. Yo me atreveria a afirmar que un gran porcentaje de los que estamos en este foro aprendimos POO para PHP con este tutorial (es mi humilde opinión, ya seguro mas de uno me va a decir que no) entonces esta diseñado para que de manera didactica aprendas todos los conceptos minimos que deberias saber.

Si te hubieras tomado la molestia de leer el enlace que te mande habrias visto en el capitulo Colaboración de objetos justo lo que estabas preguntando. Yo te puedo enseñar a pescar, a dar la caña e incluso a darte el pescado, pero no me puedo comer el pescado por ti.


Yo no lo echaria en saco roto el enlace, creeme que es muy util.
__________________
Blog de humor http://elcuasatar.net63.net/

Última edición por cuasatar; 27/03/2013 a las 08:04

Etiquetas: class, oop
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 16:33.