Iniciación PHP 5. Programación Orientada a Objetos
1. Curso de Introducción a PHP 5
Tema 3: PHP 5 y POO*
*POO = Programación Orientada a Objetos
1. Clases y Objetos
2. Métodos y propiedades
3. Herencia
4. Constantes, métodos y variables estáticas
5. Interfaces y clases abstractas
6. Excepciones
2. Curso de Introducción a PHP 5
Tema 3: PHP 5 y POO*
*POO = Programación Orientada a Objetos
1. Clases y Objetos
2. Métodos y propiedades
3. Herencia
4. Constantes, métodos y variables estáticas
5. Interfaces y clases abstractas
6. Excepciones
3. Curso de Introducción a PHP 5
3.0. POO en un suspiro
Tema 3. PHP 5 y POO
Clases. Unidades lógicas que agrupan código y datos.
Un clase es un “molde” con funciones (métodos) y variables (propiedades).
Un objeto es lo que se obtiene al “desmoldar” la clase.
4. Curso de Introducción a PHP 5
3.1. Clases y Objetos
Tema 3. PHP 5 y POO
¿Cómo creamos una nueva clases?
class miClase{
// El código de la clase iría aquí
}
¿Cómo instanciamos una clase?
$miClaseInstanciada = new miClase();
$copia = $myClaseInstancia;
Apuntan al mismo objeto (diferencia con PHP 4)
5. Curso de Introducción a PHP 5
Tema 3: PHP 5 y POO*
*POO = Programación Orientada a Objetos
1. Clases y Objetos
2. Métodos y propiedades
3. Herencia
4. Constantes, métodos y variables estáticas
5. Interfaces y clases abstractas
6. Excepciones
6. Curso de Introducción a PHP 5
3.2. Métodos y propiedades
Tema 3. PHP 5 y POO
¿Cómo declaramos un método en una clase?
class miClase{
function miMetodo(){
echo 'Ejecutado miMetodo';
}
}
¿Cómo ejecutamos un método en una clase?
$this->miMetodo();
$obj = new miClase();
$obj->miMetodo();
Fuera
Dentro
7. Curso de Introducción a PHP 5
3.2. Métodos y propiedades
Tema 3. PHP 5 y POO
Constructores
class foo {
function __construct()
{
// Inicializar el objeto
}
}
Destructores
PHP5
class foo {
function foo()
{
// Inicializar el objeto
}
}
PHP4
class foo {
function __destruct()
{
// Tareas de limpieza
}
}
Cuidado
No se puede controlar cuando se ejecuta
8. Curso de Introducción a PHP 5
3.2. Métodos y propiedades
Tema 3. PHP 5 y POO
Visibilidad
class foo {
[final] visibility function bar(){}
}
public. Se puede acceder desde cualquier ámbito (en caso de omisión)
protected. Sólo puede ser accedido por la propia clase y sus descendientes
private. Sólo puede ser accedido por la propia clase
final. No puede ser sobreescrito por sus descendientes
9. Curso de Introducción a PHP 5
3.2. Métodos y propiedades
Tema 3. PHP 5 y POO
Declarando una propiedad
class foo {
public $bar = “bar”;
private $baz = “baz”;
}
Llamando a una propiedad
$this->bar;
$this->baz;
$obj = new foo();
$obj->bar;
Fuera
Dentro
10. Curso de Introducción a PHP 5
Tema 3: PHP 5 y POO*
*POO = Programación Orientada a Objetos
1. Clases y Objetos
2. Métodos y propiedades
3. Herencia
4. Constantes, métodos y variables estáticas
5. Interfaces y clases abstractas
6. Excepciones
11. Curso de Introducción a PHP 5
3.3. Herencia
Tema 3. PHP 5 y POO
La herencia es una de las claves de la POO
Permite extender unas clases de otras. Lo cual implica
- Utilizar métodos y propiedades de las clases padre
- Añadir nuevos métodos
- Añadir nuevas propiedades
- Sobreescribir métodos y propiedades de las clases padre
La herencia junto con las interfaces permiten el polimorfismo de las clases
12. Curso de Introducción a PHP 5
3.3. Herencia
Tema 3. PHP 5 y POO
Haciendo que una clase herede de otra
class foo extends bar{
// Código
}
Sobreescribiendo un método de la clase padre
class bar{
protected $a = “”;
public function __construct($a)
{
$this->a = $a;
}
}
class foo extends bar{
public function __construct($a)
{
$this->a = $a*2;
}
}
13. Curso de Introducción a PHP 5
3.3. Herencia
Tema 3. PHP 5 y POO
Reutilizando un método de la clase padre
class foo extends bar{
public function reset()
{
return $this->__construct();
}
}
Sobreescribiendo y reutilizando un método de la clase padre
class foo extends bar{
protected $b = “”;
public function __construct()
{
$this->b = 10;
return parent::__construct();
}
}
14. Curso de Introducción a PHP 5
Tema 3: PHP 5 y POO*
*POO = Programación Orientada a Objetos
1. Clases y Objetos
2. Métodos y propiedades
3. Herencia
4. Constantes, métodos y variables estáticas
5. Interfaces y clases abstractas
6. Excepciones
15. Curso de Introducción a PHP 5
3.4. Constantes, métodos y propiedades estáticas
Tema 3. PHP 5 y POO
Declarando una propiedad estática
class foo {
static public $bar = “bar”;
}
Declarando un método estático
class foo {
static public function barMethod(){
//Hacer algo
}
}
16. Curso de Introducción a PHP 5
3.4. Constantes, métodos y propiedades estáticas
Tema 3. PHP 5 y POO
Accediendo a una propiedad estática
Ejecutando un método estático
Fuera
Dentro
$value = self::$bar;$value = foo::$bar;
Fuera
Dentro
$value = self::barMethod();$value = foo::barMethod();
17. Curso de Introducción a PHP 5
3.4. Constantes, métodos y propiedades estáticas
Tema 3. PHP 5 y POO
Definiendo una constante en una clase
Llamando a una constante
Fuera
Dentro
$value = self::BAZ;$value = foo::BAZ;
class foo{
CONST BAZ = “baz”;
}
Una constante no puede cambiar su valor mientras que un método estático sí
18. Curso de Introducción a PHP 5
Tema 3: PHP 5 y POO*
*POO = Programación Orientada a Objetos
1. Clases y Objetos
2. Métodos y propiedades
3. Herencia
4. Constantes, métodos y variables estáticas
5. Interfaces y clases abstractas
6. Excepciones
19. Curso de Introducción a PHP 5
3.5. Interfaces y clases abstractas
Tema 3. PHP 5 y POO
Definiendo una interfaz
Implementando una interfaz en una clase
interface miInterfaz{
public function metodoFoo();
}
MiClase implements miInterfaz{
public function metodoFoo(){
// Implementación del método
}
}
20. Curso de Introducción a PHP 5
3.5. Interfaces y clases abstractas
Tema 3. PHP 5 y POO
Definiendo una clase abstracta
class MiClaseAbstracta{
public function metodoFoo(){
// Implementación del método
}
abstract public function metodoBar();
}
Las clases abstractas no se pueden instanciar
Deben tener al menos un método abstracto
21. Curso de Introducción a PHP 5
Tema 3: PHP 5 y POO*
*POO = Programación Orientada a Objetos
1. Clases y Objetos
2. Métodos y propiedades
3. Herencia
4. Constantes, métodos y variables estáticas
5. Interfaces y clases abstractas
6. Excepciones
22. Curso de Introducción a PHP 5
3.6. Excepciones
Tema 3. PHP 5 y POO
Objeto especial que hereda de la clase Exception
Su misión es recopilar e informar errores
El constructor acepta dos parámetros, mensaje de error y código de error.
¿Cómo se lanza un error?
throw new Exception(“Se ha lanzado una excepción”);
¿Cómo se recoge una excepción?
try{
// código que puede lanzar una excepción
}catch($e Exception){
// gestionamos las posible excepción
die($e->getMessage());
}
23. Curso de Introducción a PHP 5
3.6. Excepciones
Tema 3. PHP 5 y POO
Extender la clase excepción:
1. Añadir nuevas funcionalidades
2. Mejorar el manejo de errores
Algunos métodos públicos de Exception
● getMessage() Devuelve el mensaje que se le pasó al constructor
● getCode() Devuelve el código que se le pasó al constructor
● getFile() Devuelve el archivo donde se lanzó la excepción
● getLine() Devuelve la línea donde se lanzó la excepción