PHP - Duda sobre POO

   
Vista:

Duda sobre POO

Publicado por Floker (2 intervenciones) el 25/02/2015 21:21:11
Hola:

Estoy empezando con la programación orienta a objetos y tengo una duda.
Cuál sería la forma correcta?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
 
class PageHeader {
  private $texto;
  private $align;
  private $fontcolor;
  private $bgcolor;
 
  public function __construct($te, $al, $color, $background){
    $this->texto = $te;
    $this->align = $al;
    $this->fontcolor = $color;
    $this->bgcolor = $background;
  }
 
  public function showHeader(){
    echo '<h1 style="text-align: '. $this->align .' ; color: '. $this->fontcolor .' ; background-color: '. $this->bgcolor .';">'. $this->texto .'</h1>';
  }
}
 
// Primera opción
$header = new PageHeader('Lorem ipsum dolor sit amet....', 'center', 'black', 'yellow');
$header->showHeader();
 
$header = new PageHeader('Textooooo', 'right', 'white', 'blue');
$header->showHeader();
 
// Segunda opción
$header = new PageHeader('Lorem ipsum dolor sit amet....', 'center', 'black', 'yellow');
$header = new PageHeader('Textooooo', 'right', 'white', 'blue');
$header->showHeader();
$header->showHeader();
 
?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Duda sobre POO

Publicado por xve (5515 intervenciones) el 25/02/2015 22:30:27
Hola Floker, la segunda opcion creo que no te funcionara correctamente, ya que se sobreescribe la variable.

Creo que ninguna de las dos opciones seria la correcta, ya que si simplemente lo utilizas para mostrar la cabecera, no seria necesario hacer dos llamadas a la clase... creo que lo suyo, seria modificar únicamente las variables, pero utilizar la misma llamada.

haber que te parece...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
class PageHeader {
  private $texto;
  private $align;
  private $fontcolor;
  private $bgcolor;
 
  public function __construct()
  {
  }
 
  public function define($te, $al, $color, $background){
    $this->texto = $te;
    $this->align = $al;
    $this->fontcolor = $color;
    $this->bgcolor = $background;
  }
 
  public function showHeader(){
    echo '<h1 style="text-align: '. $this->align .' ; color: '. $this->fontcolor .' ; background-color: '. $this->bgcolor .';">'. $this->texto .'</h1>';
  }
}
 
$header = new PageHeader()
$header->define('Lorem ipsum dolor sit amet....', 'center', 'black', 'yellow');
$header->showHeader();
$header->define('Textooooo', 'right', 'white', 'blue');
$header->showHeader();
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Duda sobre POO

Publicado por gonzalo (338 intervenciones) el 26/02/2015 16:53:22
Omnes viae Romam ducunt.

en programacion significa que para un problema puedes encontrar cientos de posibles soluciones, tu trabajo como programador es encontrar la mejor solucion.

en terminos generales esta muy bien, declaras la clase, defines el constructor y defines una funciona para el header.

creas el objeto, le pasas las variables de inicio y despues mandas llamar al header.

en mi opinion puede ser que las 2 opciones esten mal, ya que defines header = new 2 veces

$header = new PageHeader('Lorem ipsum dolor sit amet....', 'center', 'black', 'yellow');
$header->showHeader(); //hasta aqui esta bien

$header = new PageHeader('Textooooo', 'right', 'white', 'blue'); //esto podria estar mal ya que header ya fue definido.
$header->showHeader();

si lo que estas experimentando son los constructores entonces lo que puedes hacer es un peque;o cambio en la clase

class PageHeader
{
private $texto;
private $align;
private $fontcolor;
private $bgcolor;
public function __construct($te, $al, $color, $background)
{
$this->texto = $te;
$this->align = $al;
$this->fontcolor = $color;
$this->bgcolor = $background;
}

public function showHeader()
{
echo '<h1 style="text-align: '. $this->align .' ; color: '. $this->fontcolor .' ; background-color: '. $this->bgcolor .';">'. $this->texto .'</h1>';
}
}

$header1 = new PageHeader('Lorem ipsum dolor sit amet....', 'center', 'black', 'yellow');
$header2 = new PageHeader('Textooooo', 'right', 'white', 'blue');

$header1->showHeader();
$header2->showHeader();

ojo con los headers, son 2, asi generas 2 headers diferentes cada uno con sus variables independientes uno del otro.

en terminos generales esta bien, solo que al declarar el segundo header (en tu ejemplo 1) se pierde todo lo que tenia el primer header, si mas adelante lo llegaras a necesitar tendrias que redeclararlo de nuevo y perderias el segundo header.

y en el ejemplo 2 te va a imprimir el segundo header 2 veces, el primero se va a peder al redeclarar el segundo.

o es posible que te marque un error.

a reserva de que ustedes tengan una mejor propuesta claro.

suerte, salu2.

p.d. vas a vender zanahorias?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Duda sobre POO

Publicado por Floker (2 intervenciones) el 26/02/2015 22:14:35
Vale, creo que tengo un pequeño retraso XD.
Lo que quería saber era la forma correcta de utilizar una misma clase más de una vez (por ejemplo, si quisiera imprimir en una parte de mi web esa cabecera y en otra parte una diferente, pero usando la misma clase). Inexplicablemente no pensé en definir una variable de nombre diferente.

Muchas gracias por las respuestas y mi duda ha quedado solucionada.

A qué te refieres con lo de las zanahorias? :p
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Duda sobre POO

Publicado por gonzalo (338 intervenciones) el 26/02/2015 23:03:37
"Lorem ipsum dolor sit amet" = "Zanahorias Lorem ipsum" (en latin).

en este ejemplo veo que vas muy bien, solo te falta un poco mas de practica.

en POO una misma clase puede servir para definir variables diferentes cada una con informacion igual o diferente, el ejemplo clasico son los automoviles, en aspectos generales es lo mismo, la diferencia es la marca, el estilo, el color, cosas asi, pero igual todos serian autos (estarian hechos en base a una misma clase).

en programacion poo digamos que defines una clase para crear botones, el boton seria el mismo pero uno diria, cancel, otro Ok, otro back, otro up, otro down, cada uno de color diferente, en escencia es el mismo boton, estan hechos en base a la misma clase pero cada uno con valores diferentes.

suerte, salu2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar