Categorías: Tutoriales

Curso PHP orientado a objetos – Sobrecarga

Otro concepto importante de la orientación a objetos es la sobrecarga de funciones. En lenguajes que no permiten la sobrecarga debemos definir dos métodos distintos (con nombre distinto) para poder trabajar con dos funciones que hacen lo mismo, pero reciben distintos tipos de datos. La sobrecarga es muy importante para el constructor ya que normalmente tendremos distintas formas de crear la clase.

En PHP no existen las sobrecargas como tal. Sin embargo, existen mecanismos para imitarla. Como ya he dicho, la sobrecarga es muy importante en el caso del constructor, así que haremos el ejemplo siguiente, sobrecargando esta función.

El mecanismo que seguimos para imitar a la sobrecarga es usar los atributos opcionales. Imaginad que queremos tener dos constructores distintos:

  • Usuario(id, nombre, apellidos, códigoPostal): Recibe los cuatro valores y los inicializa.
  • Usuario(nombre, apellidos, códigoPostal): Recibe los tres valores, los inicializa y el identificador también lo inicializa pero de forma aleatoria (o viendo cuál le corresponde si trabajáramos con una base de datos).

La implementación, sería tal como indicamos a continuación (tenemos que poner el parámetro $id al final para poder jugar con los atributos opcionales):

function __construct($nombre, $apellidos, $codigoPostal, $id = 0)
{
 if($id != 0)
 {
  $this->id = $id;
  $this->nombre = $nombre;
  $this->apellidos = $apellidos;
  $this->codigoPostal = $codigoPostal;
 }
 else
 {
  $this->id = rand(0,100);
  $this->nombre = $nombre;
  $this->apellidos = $apellidos;
  $this->codigoPostal = $codigoPostal;
 }
}

Al poner el identificador al final, igualado a cero en la declaración, lo que le estamos diciendo al compilador es que:

  • Si se llama con tres argumentos, el valor del identificador lo iguale a cero y por lo tanto entre en la parte inferior de la condición, donde se calcula el identificador aleatorio.
  • Si se llama con cuatro argumentos, el identificador tomará el valor que el usuario le pase y por lo tanto funcionará como lo ha hecho hasta ahora.Veamos un par de ejemplos de invocación de este constructor.
$usuario_1 = new Usuario("José", "Gómez Martínez", 14004);
$usuario_2  = new Usuario("José", "Gómez Martínez", 14004, 10);

Ambas sentencias son válidas, la primera asigna un identificador aleatorio y la segunda, asigna el identificador igual a 10.

F. Javier Carazo Gil

Cofundador de CODECTION, empresa especializada en WordPress, autor de un libro sobre WordPress (el primero en español) y multitud de artículos (en medios físicos y virtuales) sobre el tema. Participa en la comunidad WordPress de forma activa siendo parte del equipo organizador de la WordPress Meetup de Córdoba, dando charlas en diferentes WordCamp y siendo autor y coautor de multitud de plugins libres y premium para WordPress de gran éxito.

Ver comentarios

  • @javier parra: Mañana o a lo largo del fin de semana habrá otro. Esperemos que a Google también le guste y nos referencie bien alto :)

  • Muy buenos los tutoriales, pero no sé como implementarlos, es decir, donde escribir el código y donde invocarlo, o donde escribir las clases, ¿Dentro del body O qué?
    Muchas Gracias.

  • @MontoGeek

    el codigo php va dentro del body la etiqueta de principio del codigo php es <?php y la de cierre <?

    el codigo php es codigo del lado del servidor el servidor se encarga de procesar el codigo y devolver una pagina html o xhtml.

    El codigo php va mezclado entre el codigo html.

    Programas para crear paginas en codigo php tienes el gedti o el bluefish en linux entre otros y en windows el bloc de notas, el notepad ++, o el bluefish tambien.

    Las páginas con codigo php tienen que tener la extension php

    Espero haberte ayudado

  • @MontoGeek: Es justo como dice javier parra.

    @javier parra: Mil gracias por tu ayuda :)

  • @Carazo de nada para eso estamos

    Por cierto hay una errata el editor de texto en linux es gedit y no gedti como dije.

    Y se me olvidó comentar que para probar paginas php sin subirlas a internet, ya sea servidor comprado propio, servidor compartido o servidor gratuito compartido, puedes usar apache tanto en windows como en gnu/linux y si necesitas de un gestor de bases de datos para tus paginas php puedes usar el mysql que está tanto para windows como para gnu/linux.

    Para las personas novatas, a lo mejor es cuesta configurar apache con mysql para que funcione correctamente, para ello existe en gnu/linux el LAMP y en windows el WAMP o el easyphp el que mas te guste, y esos incorporan ya el apache, mysql y phpmyadmin, y lo configura el solo para que los programas se comuniquen entre sí.

    El phpmyadmin permite una gestion grafica de las bases de datos que tengamos creadas.

    Un saludo

    javier

  • Hola yo queria saber si a partir de php 6 existe la posibilidad de sobrecarga de metodos en php o si se esta pensando en incorporar esa funcionalidad.

    Saludos
    Gracias

Entradas recientes

DeepSeek

2 días hace

Contacto

2 semanas hace

Smart-tv mute

2 semanas hace

STEAM OS

3 semanas hace

2025

4 semanas hace

El podcast de Linux Hispano – #072 – El hardware libre debe consolidarse como el software libre

https://www.youtube.com/embed/z-xGk9c_eOw Guionista y locutor: Manuel Ignacio López Quintero.Fecha de publicación: 31 de diciembre de 2024.

1 mes hace