miércoles, 20 de abril de 2011

Herencia en PHP Parte 3

Bien siguiendo con los ejemplos de herencia hoy veremos uno parecido al anterior solo que con un metodo mas.

Definamos que Usuario es una Persona y que además de tener todos los datos de ella, se define ahora en la clase Padre el método toString

Clase Persona Y el metodo ToString

Clase Usuario con su Constructor.

Solo instanaciamos la clase y le mandamos los parametros al constructor.

¡Y funciona!!!!!
La explicación es que, a diferencia que el constructor, el toString se hereda porque es público pero este se ejecuta de forma automática, sin necesidad de explicitar como en el anterior caso (constructor).

Aquí es donde deberíamos entender que el principio de ocultación refuerza los diseños al ocultar y cerrar el acceso a detalles internos, pero no por eso nos impide poder aprovechar las implementaciones realizadas. Como es este caso, no tenemos acceso a los atributos de forma directa y no podemos modificarlos, pero perfectamente podemos asignarles información y usarlos.

Sigamos con el siguiente Ejemplo.

Los usuarios necesitan un id único “autogenerado”

Aprovecharemos la situación para explicar los “atributos estáticos” (static), o lo que podríamos traducir como “atributos / métodos de Clase”. Estos elementos son de acceso común para todas las instancias de la misma clase. Un ejemplo práctico puede ser que la clase sepa autogenerar un id nuevo (que no se repita cada vez que se construye un objeto), para ello, la clase tienen que contar el id actual para asignarle +1 al próximo usuario.

La clase Persona sigue igual, lo que cambia es la clase Usuario y se agrega un atributo protegido (lo cual permitirá que una clase herede de Usuario y acceder directamente al atributo como propio) y se ajusta el constructor de la clase para no solicitar más el id.
Atención: para que funcione el autogenerado de id el atributo ultimoId debe ser “estático” .

La forma de acceder al atributo estático es usando self::$atributo.

self y parent
Cuando queramos accesar a una constante o metodo estatico por ejemplo desde dentro de la clase podemos usar esta palabra reservada.
self.

Cuando queramos acceder a una constante o metodo de una clase padre, la palabra reservada parent nos sirve para llamarla desde una clase extendida.

Cabe destacar que esto ocurre dentro del mundo “stateless” (“estado desconectado”), por consiguiente él o los objetos se pierden luego de terminada la ejecución de la página, iniciando todo nuevamente (si restaura la pantalla volverá a contar desde “1”).

Descargar

comenten no sean bayuncos ...

1 comentario: