* 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.