10 - Parámetros opcionales. |
Esta característica está presente tanto para programación estructurada como para programación orientada a objetos. Un parámetro es opcional si en la declaración del método le asignamos un valor por defecto. Si luego llamamos al método sin enviarle dicho valor tomará el que tiene por defecto.
Con un ejemplo se verá más claro: Crearemos nuevamente la clase CabeceraDePagina que nos muestre un título alineado con un determinado color de fuente y fondo.
pagina1.php
<html> <head> <title>Pruebas</title> </head> <body> <?php class CabeceraPagina { private $titulo; private $ubicacion; private $colorFuente; private $colorFondo; public function __construct($tit,$ubi='center',$colorFuen='#ffffff',$colorFon='#000000') { $this->titulo=$tit; $this->ubicacion=$ubi; $this->colorFuente=$colorFuen; $this->colorFondo=$colorFon; } public function graficar() { echo '<div style="font-size:40px;text-align:'.$this->ubicacion.';color:'; echo $this->colorFuente.';background-color:'.$this->colorFondo.'">'; echo $this->titulo; echo '</div>'; } } $cabecera1=new CabeceraPagina('El blog del programador'); $cabecera1->graficar(); echo '<br>'; $cabecera2=new CabeceraPagina('El blog del programador','left'); $cabecera2->graficar(); echo '<br>'; $cabecera3=new CabeceraPagina('El blog del programador','right','#ff0000'); $cabecera3->graficar(); echo '<br>'; $cabecera4=new CabeceraPagina('El blog del programador','right','#ff0000','#ffff00'); $cabecera4->graficar(); ?> </body> </html>
En esta clase hemos planteado parámetros opcionales en el constructor:
public function __construct($tit,$ubi='center',$colorFuen='#ffffff',$colorFon='#000000') { $this->titulo=$tit; $this->ubicacion=$ubi; $this->colorFuente=$colorFuen; $this->colorFondo=$colorFon; }
El constructor tiene 4 parámetros, uno obligatorio y tres opcionales, luego cuando lo llamemos al crear un objeto de esta clase lo podemos hacer de la siguiente forma:
$cabecera1=new CabeceraPagina('El blog del programador');
En este primer caso el parámetro $tit recibe el string 'El blog del programador' y los siguientes tres parámetros se inicializan con los valores por defecto, es decir al atributo $ubicacion se carga con el valor por defecto del parámetro que es 'center'. Lo mismo ocurre con los otros dos parámetros del constructor.
Luego si llamamos al constructor con la siguiente sintaxis:
$cabecera2=new CabeceraPagina('El blog del programador','left');
el parámetro $ubi recibe el string 'left' y este valor remplaza al valor por defecto que es 'center'.
También podemos llamar al constructor con las siguientes sintaxis:
$cabecera3=new CabeceraPagina('El blog del programador','right','#ff0000'); ..... $cabecera4=new CabeceraPagina('El blog del programador','right','#ff0000','#ffff00');
Veamos cuales son las restricciones que debemos tener en cuenta cuando utilizamos parámetros opcionales:
Podemos definir parámetros opcionales tanto para el constructor como para cualquier otro método de la clase. Los parámetros opcionales nos permiten desarrollar clases que sean más flexibles en el momento que definimos objetos de las mismas.