Categoria: Programacion Tema: Php Titulo: Parametros de tipo objeto en php
Fecha del Tema: 2013-04-25 19:06:29Pará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).
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).