* Síntesis del libro «POO y MVC en PHP» de Eugenia Bahit
** Foro dedicado al tema: Foro de POO y MVC en PHP
Definición: La POO es una técnica de programación que utiliza objetos e interacciones en el diseño de un sistema.
Elementos: Se compone de clases, objetos, métodos, eventos, propiedades y atributos.
Características: Abstracción, encapsulamiento, modularidad, ocultación, polimorfismo y herencia.
CLASES EN PHP
Instanciables (también pueden ser heredadas):
<?php class MiClaseInstanciable { } ?>
Abstractas (no instanciables pero sí heredables):
<?php abstract class MiClaseAbstracta { } ?>
Finales (instanciables no heredables):
<?php final class MiClaseFinal { } ?>
Heredadas (instanciables heredables, que a la vez heredan de una clase «madre»):
<?php class MiClaseHija extends MiClaseMadre { } ?>
PROPIEDADES DE CLASE EN PHP
Éstas pueden ser:
Públicas (accesibles desde cualquier parte de la aplicación):
<?php class Ejemplo { public $propiedad = 'Valor'; } ?>
Protegidas (solo accesibles desde la clase que las declara y clases que la heredan):
<?php class Ejemplo { protected $propiedad = 'Valor'; } ?>
Privadas (solo accesibles desde la clase que las declara):
<?php class Ejemplo { private $propiedad = 'Valor'; } ?>
Estáticas (aquellas que no pueden ser modificadas):
<?php class Ejemplo { static $propiedad = 'Valor'; } ?>
Estas propiedades estáticas pueden tener cualquier visibilidad: pública, privada o protegida:
<?php class Ejemplo { // no se modifica. // Se accede desde cualquier parte de la aplicación public static $public_static = 'Valor'; // no se modifica. // Se accede desde la clase que la declara // y desde las que la heredan protected static $protected_static = 'Valor'; // no se modifica. // Se accede desde la clase que la declara private static $private_static = 'Valor'; } ?>
CONSTANTES DE CLASE
Tienen visibilidad pública (como las propiedades públicas) y no pueden modificarse (al igual que las propiedades estáticas).
<?php class Ejemplo { const MI_CONSTANTE = 'Valor'; } ?>
Métodos de clase en PHP: éstos, pueden, al igual que las propiedades, ser:
– Dinámicos : aquellos que efectúan cambios a la clase y/o acceden dinámicamente a sus propiedades.
– Estáticos : no efectúan cambios de ningún tipo y su función, en consecuencia, es estática.
– Públicos, privados o protegidos : donde aplica la misma visibilidad descrita en las propiedades.
<?php class Ejemplo { public $propiedad = 'valor'; static $variable = 'valor de variable'; public function metodo_publico($valor) { $this->propiedad = $valor; // modifica el valor de la propiedad } static function metodo_estatico() { return 45; // siempre retorna el número 45 } private function metodo_privado() { // a este método solo se puede acceder desde esta clase } } ?>
CREACIÓN DE OBJETOS EN PHP Y LLAMADA A LAS PROPIEDADES Y MÉTODOS DE UNA CLASE
Crear un objeto para luego acceder a sus propiedades y métodos:
$nuevo_objeto = new NombreDeLaClase();
Acceder a las propiedades públicas NO estáticas:
$nuevo_objeto->propiedad_publica;
Acceder a los métodos públicos NO estáticos:
$nuevo_objeto->metodo_publico();
Acceder a propiedades estáticas públicas (no debe instanciarse el objeto):
NombreDeLaClase::$propiedad_publica_estatica; NombreDeLaClase::CONSTANTE_DE_CLASE;
Acceder a métodos públicos y estáticos (no debe instanciarse el objeto):
NombreDeLaClase::metodo_publico_estatico();
Referencia a propiedades y métodos dentro de la misma clase:
<?php class Ejemplo { static $propiedad_estatica = 1; const CONSTANTE = 15; public $propiedad_dinamica = 0; static function metodo_estatico() { return 45; } function metodo_dinamico() { // aceder a una propiedad dinámica y modificar su valor $this->propiedad_dinamica = 100; // acceder a un método estático $numero = self::metodo_estatico(); // acceder a una propiedad estática o constante print self::$propiedad_estatica; print self::CONSTANTE; } function otro_metodo() { // acceder a un método dinámico $this->metodo_dinamico(); } } ?>
Referencia a propiedades y métodos dentro de una clase hija (heredada):
<?php class ClaseHija extends Ejemplo { function metodo_hijo() { // aceder a una propiedad dinámica de la clase madre y modificar su valor $this->propiedad_dinamica = 100; // acceder a un método estático de la clase madre $numero = parent::metodo_estatico(); // acceder a una propiedad estática o constante de la clase madre print parent::$propiedad_estatica; print parent::CONSTANTE; // acceder a un método dinámico de la clase madre $this->metodo_dinamico(); } } ?>
Puedes descargar el libro «POO y MVC en PHP» de Eugenia Bahit haciendo click aquí, o entrar en el Foro de POO y MVC en PHP.