extends

Con frecuencia es necesario tener clases con variables y funciones similares a otra clase existente. De hecho, es una buena práctica definir una clase genérica que pueda ser usada en todos sus proyectos y adaptar ésta clase para las necesidades de cada uno de sus proyectos específicos. Para facilitar esto, las clases pueden ser extensiones de otras clases. La clase extendida o derivada tiene todas las variables y funciones de la clase base (esto es llamado 'herencia', a pesar del hecho de que nadie muera) y lo que se agregue en la definición extendida. No es posible substraer de una clase, es decir, remover la definición de cualquier función o variable existente. Una clase extendida siempre depende de una clase base única, lo que quiere decir que no se soporta herencia múltiple. Las clases son extendidas usando la palabra clave 'extends'.

<?php
class Carrito_Con_Nombre extends Carrito {
    var
$duenyo;
  
    function
definir_duenyo ($nombre) {
        
$this->duenyo = $nombre;
    }
}
?>

Esto define una clase Carrito_Con_Nombre que tiene todas las variables y funciones de Carrito, más una variable adicional $duenyo y una función adicional definir_duenyo(). Se crea un carrito con nombre en la forma usual y ahora es posible definir y obtener el dueño del carrito. Aun es posible usar las funciones normales de un carrito sobre los carritos con nombre:

<?php
$carrito_n
= new Carrito_Con_Nombre;  // Crear un carrito con nombre
$carrito_n->definir_duenyo("kris");   // Nombrar el carrito
print $carrito_n->duenyo;             // imprimir el nombre del duenyo
$carrito_n->agregar_item("10", 1);    // (funcionalidad heredada de carrito)
?>

Esto también se conoce como una relación "padre-hijo". Se crea una clase, padre, y se usa extends para crear una clase basada en la clase padre: la clase hija. Es posible incluso usar esta nueva clase hija y crear otra clase basada en esta clase hija.

Nota: ¡Las clases deben ser definidas antes de ser usadas! Si desea que la clase Carrito_Con_Nombre extienda la clase Carrito, tendrá que definir la clase Carrito primero. Si desea crear otra clase llamada Carrito_amarillo_con_nombre basada en la clase Carrito_Con_Nombre, debe definir Carrito_Con_Nombre primero. Resumiendo: el orden en que se definen las clases es importante.

Hosting by: hurra.com
Generated: 2007-01-26 18:01:09