PHP: imprescindible para crear páginas web de modo profesional
Y ahora tambien aprende a programar en C++ con Aprende Web C++
y entérate de las novedades o deja un comentario.
última modificación: 13-07-2018.
Visitas este mes: 77
Visitas el mes pasado: 102
Mi agradecimiento a los siguientes sitios en los que me he basado para la elaboración de este manual.:
Por elegir aprende-web
Aprende-web está diseñado a partir de los lenguajes que aquà mismo se enseñan.
By Anyelguti
Una función constructora o constructor, es una función que podemos llamar al mismo tiempo que instanciamos un objeto.
Esta función es parecida a cualquier otro método de la clase, con la diferencia de que la podemos llamar cuando instanciamos un objeto.
Para crear una función constructora debemos llamarla de la misma manera que la clase a la que pertenece, por ejemplo si hemos creado la clase:
class Herramientas { ... }
Dentro de las llaves que definen la clase crearemos la función:
function Herramientas ($argum1, $argum2, ... $argumN) { ... }
Como vemos la función puede llevar o no argumentos, y dentro de las llaves podemos indicar las propiedades del objeto mediante la variable $this .
Para llamar a una función constructora lo haremos en el momento de instanciar el objeto, de la siguiente manera:
$caja_herramientas = new Herramientas($arg1,arg2, ... argN);
Es decir, al instanciar el objeto, le pasamos los argumentos, de manera que desde el mismo momento en que se crea el objeto, este puede tener ya una serie de propiedades, condiciones, o modo de actuar, marcado por la función constructora.
Una de las utilidades más frecuentes de la función constructora es la de añadir al objeto instanciado las propiedades que queremos que sean distintas a las que tiene por defecto. Esto se hace pasándole los nuevos valores como argumentos, e indicando en la función constructora que el objeto debe tener esos nuevos valores.
Vamos a ver cómo funciona una función constructora con un ejemplo, para ello retomamos el ejemplo de la página anterior, donde habíamos creado una clase Herramientas. El código de la clase estaba guardado en el archivo clase_herramientas.php. A este código le añadiremos una función constructora que define el valor de las propiedades del objeto. Estos valores se los pasaremos como argumentos de la función. El código de esta página quedará así:
<?php
class Herramientas {
var $nombre="sin_nombre";
var $precio=0;
var $imagen="objetos/herramientas.gif";
var $descripcion;
var $precio_descuento;
function descuento($porcentaje) {
$rebaja=$this->precio - ($this->precio*($porcentaje/100));
$this->precio_descuento =$rebaja;
}
function mostrar() {
echo "<img src='$this->imagen' alt='$this->nombre' width='200' align='left'>";
echo "<p>Producto: $this->nombre. </p>";
echo "<p>Precio: $this->precio € </p>";
if ($this->precio_descuento) {
echo "<p>Precio con descuento = $this->precio_descuento.</p>";
}
echo "<p>Descripción: $this->descripcion. </p>";
}
function Herramientas ($nomb,$prec,$imag,$desc,$reba) {
$this->nombre=$nomb;
$this->precio=$prec;
$this->imagen=$imag;
$this->descripcion=$desc;
if ($reba) {
$this->descuento($reba);
}
}
}
?>
En color morado está resaltada la función constructora. El resto del código es el mismo que teníamos en el ejemplo de la página anterior.
En esta función vamos dando al objeto los distintos valores para sus propiedades, los cuales los pasaremos en los argumentos de la función. Fíjate en el uso de la variable $this para referirnos al propio objeto que instanciamos.
Por otra parte en la página principal cambiaremos la forma de crear el nuevo objeto, primero definiremos una serie de variables que contienen las propiedades del objeto, y después se las pasaremos como argumento al instanciar el objeto.
En el archivo index.php de este ejemplo, cambiaremos el código que instancia y muestra el objeto por este otro:
<?php $nombre="Caja de herramientas tipo 1"; $precio = 60; $imagen = "objetos/herramientas.gif"; $descripcion ="Caja completa de herramientas, 50 piezas calidad buena."; $caja1 = new Herramientas ($nombre,$precio,$imagen,$descripcion,"20"); $caja1->mostrar(); ?>
El código se muestra más sencillo, ya que no tenemos que definir las propiedades, sino que simplemente pasamos como argumento los valores de las propiedades.
Al pasar los argumentos debemos de tener cuidado de pasarlos en el mismo orden en que están en la función constructora para que cada uno de ellos se corresponda con la propiedad a la que corresponde.
Una vez pasados los argumentos, sólo tenemos que llamar a la función mostrar() para ver en pantalla el objeto.
Este ejemplo nos da como resultado una página (index.php) que la veremos en pantalla como en el siguiente enlace:
Como ves la página es muy similar al del ejemplo anterior, sin embargo tiene la ventaja de que ahora añadir a la página un nuevo objeto es mucho más fácil.
Veamos cómo se añade un nuevo objeto a la página de nuestro ejemplo, Como en cada objeto ponemos una imagen distinta, en primer lugar guardaremos la imagen que vamos a ponerle al objeto en la subcarpeta objetos, y la llamaremos herramientas2.gif. por si quieres crear el ejemplo a la vez que lo explicamos, la imagen es la siguiente:
Una vez copiada y guardada la imagen modificamos el código php anterior de la página index.php, añadiéndole las siguientes líneas:
<?php
$nombre="Caja de herramientas tipo 1";
$precio = 60;
$imagen = "objetos/herramientas.gif";
$descripcion ="Caja completa de herramientas, 50 piezas calidad buena.";
$caja1 = new Herramientas ($nombre,$precio,$imagen,$descripcion,"20");
$caja1->mostrar();
echo "<hr width='80%'/>";
$nombre="Caja de herramientas tipo 2";
$precio =80;
$imagen = "objetos/herramientas2.gif";
$descripcion ="Caja herramientas profesional, 70 piezas calidad excelente.";
$caja2 = new Herramientas ($nombre,$precio,$imagen,$descripcion,"20");
$caja2->mostrar();
?>
En morado está resaltado el nuevo código que hemos añadido, como ves es muy similar al anterior. La página index.php quedará ahora como en el siguiente enlace:
Como vemos, la creación de clases puede ser útil en algunas ocasiones, ya que si en principio requiere escribir más trozo de código, es posible que luego pueda simplificarnos mucho el trabajo.
Dentro de una clase pueden también crearse subclases o clases dependientes, esto lo veremos en la póxima página:
Sugerencias:
aprendeweb@aprende-web.net. Envia un
Visita nuestro blog par saber en qué estamos trabajando: Aprende Web Blog
Más sobre anyelguti en http://anyelguti.16mb.com