Temas > Programacion > Php > Parametros de tipo objeto en php
Julio

Parámetros de tipo objeto
Otra posibilidad que nos presenta el lenguaje PHP es pasar
parámetros no solo de tipo primitivo (enteros, reales, cadenas etc.)
sino parámetros de tipo objeto. Vamos a desarrollar un problema
que utilice esta característica. Plantearemos una clase Opcion y
otra clase Menu. La clase Opcion definirá como atributos el titulo,
enlace y color de fondo, los métodos a implementar serán el
constructor y el mostrar.
Por otro lado la clase Menu administrará un array de objetos de la
clase Opcion e implementará un métodos para insertar objetos de la
clase Menu y otro para mostrar. Al constructor de la clase Menu se le
indicará si queremos el menú en forma `horizontal` o `vertical`.
El código fuente de las dos clases es (pagina1.php):
<html>
<head>
<title>Pruebas</title>
</head>
<body>
<?php
class Opcion {
   private $titulo;
   private $enlace;
   private $colorFondo;
   public function __construct($tit,$enl,$cfon)
   {
      $this->titulo=$tit;
      $this->enlace=$enl;
      $this->colorFondo=$cfon;
   }
   public function mostrar()
   {
      echo `<a style="background-color:`.$this->colorFondo.
                `" href="`.$this->enlace.`">`.$this->titulo.`</a>`;
   }
}
class Menu {
   private $opciones=array();
   private $direccion;
   public function __construct($dir)
   {
      $this->direccion=$dir;
   }
   public function insertar($op)
   {
      $this->opciones[]=$op;
   }
   private function mostrarHorizontal()
   {
      for($f=0;$f<count($this->opciones);$f++)
      {
          $this->opciones[$f]->mostrar();
      }
   }
   private function mostrarVertical()
   {
      for($f=0;$f<count($this->opciones);$f++)
      {
          $this->opciones[$f]->mostrar();
          echo `<br>`;
      }
   }
   public function mostrar()
   {
      if (strtolower($this->direccion)=="horizontal")
          $this->mostrarHorizontal();
      else
          if (strtolower($this->direccion)=="vertical")
              $this->mostrarVertical();
   }
}
$menu1=new Menu(`horizontal`);
$opcion1=new Opcion(`Google`,`http://www.google.com`,`#C3D9FF`);
$menu1->insertar($opcion1);
$opcion2=new Opcion(`Yahoo`,`http://www.yahoo.com`,`#CDEB8B`);
$menu1->insertar($opcion2);
$opcion3=new Opcion(`MSN`,`http://www.msn.com`,`#C3D9FF`);
$menu1->insertar($opcion3);
$menu1->mostrar();
?>
</body>
</html>
La clase Opcion define tres atributos donde se almacenan el título
del hipervínculo, direccón y el color de fondo del enlace:
<?php
   private $titulo;
   private $enlace;
   private $colorFondo;
?>
En el constructor recibimos los datos con los cuales inicializamos
los atributos:
<?php
  public function __construct($tit,$enl,$cfon)
  {
     $this->titulo=$tit;
     $this->enlace=$enl;
     $this->colorFondo=$cfon;
  }
?>
Por último en esta clase el método mostrar muestra el enlace de
acuerdo al contenido de los atributos inicializados previamente
en el constructor:
<?php
  public function mostrar()
  {
echo `<a style="background-color:`.$this->colorFondo.`"
href="`.$this->enlace.`">`.$this->titulo.`</a>`;
  }
?>
La clase Menu recibe la colaboración de la clase Opcion. En esta clase
definimos un array de objetos de la clase Opcion (como vemos
podemos definir perfectamente vectores con componente de tipo
objeto), además almacena la dirección del menú (horizontal,vertical):
<?php
  private $opciones=array();
  private $direccion;
?>
El constructor de la clase Menu recibe la dirección del menú e
inicializa
el atributo 
<?php
$direccion:
  public function __construct($dir)
  {
     $this->direccion=$dir;
  }
?>
Luego tenemos el método donde se encuentra el concepto nuevo:
<?php
  public function insertar($op)
  {
     $this->opciones[]=$op;
  }
?>
El método insertar llega un objeto de la clase Opcion (previamente
creado) y se almacena en una componente del array. Este método
tiene un parámetro de tipo objeto ($op es un objeto de la clase Menu).













¿Has olviado tu contraseña?

Pulsa aquí para registrate




Google






LunMarMieJueVieSabDom
    123
45678910
11121314151617
181920 21222324
252627282930 

Jueves 21 de Noviembre 2024
Semana 47

..............................................................................................................................................................................................................................................
(Contacto)..
Esta web utiliza cookies para obtener datos estadísticos de la navegación de sus usuarios. Política de privacidad y Aviso legal