Sunteți pe pagina 1din 6

PHP fue diseado originalmente como un lenguaje de scripting, pero a medida que se avanzaba

en su desarrollo, se fueron incluyendo caractersticas para programar con orientacin a


objetos. Hoy en da con PHP5 contamos ya con una buena plataforma de programacin
orientada a objetos.

Hay mucha controversia sobre la mejor forma de afrontar un proyecto web. Hay partidarios
de utilizar PHP como un gran nmero de funciones separadas e ir realizando las llamadas
necesarias, es decir, utilizar PHP como un simple lenguaje de scripting utilizando la
metodologa de la programacin estructurada.

Por el contrario tenemos a desarrolladores que prefieren dedicar ms tiempo a disear un buen
sistema orientado a objetos utilizando los distintos frameworks disponibles, como symfony,
zend o code igniter.

los diferentes mtodos de desarrollo, es obvio, que utilizar la metodologa de la programacin


estructurada es ms sencillo ya que aprender a utilizar los distintos frameworks requiere
tiempo y esfuerzo dando lugar a una curva de aprendizaje ms larga. An as, este pequeo
inconveniente no debera frenaros.

Clases y objetos:
Una clase es un tipo de datos que define el estado y el comportamiento de los objetos que se
instancian a partir de ellas. Contiene un conjunto de atributos/propiedades/campos y un
conjunto de funciones/mtodos/operaciones. En PHP las clases se crean utilizando la palabra
clave reservadaclass:

class nombreClase
{
}

Dentro de la definicin de clase podemos declarar variables y funciones. Las variables pueden
declararse utilizando la palabra clave var, pero en PHP5 ya existen los modificadores de
accesopublic, protected y private tpicos de los lenguajes orientados a objetos.

class nombreClase
{
private $atributo_privado;
protected $atributo_protegido;
public $atributo_publico;

private function operacion_1()


{
}

public function operacion_2()


{
}

Modificadores de acceso:
Si no especificamos ningn modificador de acceso, por defecto las variables y funciones
son public, es decir, son accesibles desde dentro y fuera del objeto. Esto es una mala prctica
de programacin porque rompe con los principios de la POO, ya que hay que garantizar la
integridad de los datos, es decir, lo ideal sera encapsular los datos para que solo el propio
objeto pudiera manipularlos y exponer una interfaz para poder acceder a ellos.
Las variables y funciones declaradas como private solo son accesibles dentro de la clase. Las
clases que hereden de ella tampoco tendrn acceso a las variables y funciones declaradas con
el modificador de acceso private.
Si queremos que las variables y las funciones sean accesibles tambin para las clases que
heredan pero que no se puedan manipular desde fuera podemos declararlas con el modificador
de accesoprotected.

Constructor:
Existe un conjunto de funciones especiales en la definicion de una clase. Una de ellas es el
constructor de la clase. Cada vez que creemos/instanciemos un objeto se llama al constructor
de la clase que es el encargado de inicializar los atributos del objeto. En versiones anteriores
de PHP la funcin constructora se llamaba igual que el nombre de la clase. A partir de PHP5 se
utiliza el nombre __construct(). Si en una clase no se encuentra una funcin con este nombre
PHP buscar una funcin con el mismo nombre que la clase.

class nombreClase
{
private $atributo_privado;
protected $atributo_protegido;
public $atributo_publico;

function __construct($param1, $param2, $param3)


{
$atributo_privado=$param1;
$atributo_protegido=$param2;
$atributo_publico=$param3;
echo 'Constructor de la clase';
}

private function operacion_1()


{
}

public function operacion_2()


{
}

Cabe destacar que PHP5 admite la sobrecarga de funciones, lo que significa que podemos
realizar dos funciones con el mismo nombre y diferentes tipos o cantidad de parmetros.

Destructor:
Otra de las funciones especiales de clase es el destructor. Su tarea es lo contrario al
constructor. Esta funcin se ejecuta cada vez que se destruye un objeto, lo que ocurre cuando
se eliminan todas las referencias al objeto. El nombre del destructor es __destruct(). Los
destructores no aceptan parmetros.

class nombreClase
{
private $atributo_privado;
protected $atributo_protegido;
public $atributo_publico;
function __construct($param1, $param2, $param3)
{
$atributo_privado=$param1;
$atributo_protegido=$param2;
$atributo_publico=$param3;
echo 'Constructor de la clase';
}

function __destruct()
{
echo 'Destructor de la clase';
}

private function operacion_1()


{
}

public function operacion_2()


{
}

Atributos y funciones de clase:


Podemos utilizar los atributos y las funciones de clase dentro de nuestra clase. Para referirnos
a ella contamos con la pseudo-variable $this que hace referencia a la propia clase.
Constantes de clase:
En PHP5 podemos crear constantes en una clase pudiendo acceder a ella desde fuera de la
clase sin la necesidad de instanciar un objeto. Las constantes se crean con la palabra
reservada const, y accedemos a ella con la siguiente
sintaxis, nombreClase::nombreConstante.

class Matematicas
{
const pi = 3.1416;
const e = 2.7182;
}

echo Matematicas::pi.' '.Matematicas::e;

Mtodos estticos
En PHP5 podemos crear mtodos estticos y acceder a ellos sin la necesidad de instanciar un
objeto. Las mtodos estticos se declaran con la palabra reservada static y se accede a ellos
mediante la sintaxis, nombreClase::nombreFuncion. Cabe destacar que no podemos
acceder a las constantes ni a los mtodos estticos con la pseudo-variable $this. Para poder
acceder a ellas dentro de una clase utilizamos la pseudo-variable self::nombreConstante o
self::nombreFuncion(). Por ltimo decir que dentro del cuerpo de una funcin esttica solo
podemos utilizar variables estticas, no variables de clase.

class Matematicas
{
public static function cuadrado($numero)
{
return $numero*$numero;
}
}

echo Matematicas::cuadrado(5);

Instancias:
La clase por s sola no realiza nada, no es ms que una plantilla con la que podemos
crear/instanciar objetos. En PHP los objetos se instancian con el operador new seguido del
nombre de la clase. A continuacin entre parntesis todos los parmetros que sean necesarios
suministrar al constructor.
Podemos acceder a las variables y a las funciones publicas mediante el operador ->.

$variable_objeto = new nombreClase($param1, $param2, $param3);

$variable_objeto->operacion2();

Herencia
La herencia nos permite crear una relacion jerrquica entre las clases. La clase hija o subclase
se comporta de la siguiente manera:

-Hereda automaticamente todas las variables y funciones miembros de la clase padre que
tengan un modificador de acceso public y protected.
-Puede definir nuevas variables y funciones, as como reescribir variables y funciones de la
clase padre siempre que no se hayan declarado como finales.

-Puede acceder a las variables y funciones de la clase padre mediante la pseudo-


variable parent::.
En PHP podemos crear una subclase de una superclase utilizando la palabra
reservada extends de la siguiente manera:

class SubClase extends SuperClase


{
}

En el interior de las llaves definiremos las nuevas variables y funciones de la clase hija, adems
podemos reemplazar las funciones definidas en la clase padre siempre que no se hayan
deifnidido con el modificador final. Para ello solo tenemos que definir una funcion que se llame
igual y contenga el mismo nmero de parmetros que en la clase padre.
Si la clase padre se ha declarado como final no se podr heredar una subclase.
Interfaces
PHP no permite la herencia mltiple, es decir, poder crear una subclase a partir de varias
superclases. Pero se puede simular su comportamiento si utilizamos las interfaces.

Una interfaz no es ms que la declaracin de un conjunto de constantes y funciones que deben


ser definidas en la clase que implemente dicha interfaz. Una interfaz en PHP se crea utilizando
la palabra reservada interface de la siguiente manera:

interface Listar
{
function listar_nombre();
}

En este ejemplo hemos creado una interfaz llamada Listar que define una
funcion listar_nombre(). La clase que implemente esta interfaz debera implementar todas las
funciones de la interfaz. Una clase puede implementar una interfaz mediante la palabra
reservada implements de la siguiente forma:

class Ejemplo implements Listar


{
function listar_nombre()
{
echo 'Francisco';
}
}

De esta forma podemos simular la herencia mltiple ya que podemos implementar todas las
interfaces que queramos si las separamos por comas, con el inconveniente que debemos
implementar todas las funciones declaradas en la interfaz.

Clases abstractas
PHP5 tambin incluye el concepto de clases abstractas tpicas de otros lenguajes orientados a
objetos. Las clases abstractas se definen en PHP5 utilizando la palabra reservada abstract de
la siguiente manera:

abstract class nombreClase


{
}

Una clase abstracta no puede ser instanciada, sirve como clase base para que otras hereden
de ella. Una clase abstracta define una serie de funciones abstractas que no tienen
implementacin. Las clases que hereden de una clase abstacta tendrn que implementar esas
funciones, sino automaticamente se convierten en clases abstractas.

Imaginaros la siguiente situacin. Tenemos una clase Persona que representa una persona,
con una serie de atributos como nombre, apellidos y dni. Y queremos construir clases que
representen diferentes tipos de personas, como, Empleado, Director, Funcionario y Conserje.
Necesitamos un mtodo que calcule el salario de cada tipo de persona. Para ello podemos
definir una clase abstracta Persona con una serie de variables y una funcin asbtracta llamada
calcular_salario(). Todas las dems clases heredarn de esta clase base y tendrn que
sobreescribir el mtodo calcular_salario() de la clase padre.

class Persona
{
protected $nombre;
protected $apellidos;

abstract function calcular_salario();


}

class Director extends Persona


{

function __construct($nombre, $apellidos)


{
$this->nombre=$nombre;
$this->apellidos=$apellidos;
}

function calcular_salario()
{
return 10000;
}

$director = new Director('Francisco','Belmonte Ruiz');

//Imprime 10000
echo $director->calcular_salario();

RESUMEN
Hasta ahora hemos visto una serie de conceptos orientados a objetos en PHP : crear
clases, instanciar objetos, utilizar modificadores de acceso, crear constantes y
funciones estticas, crear clases abstractas e interfaces, aprender a heredar a partir
de otras clases, acceder a las variables y funciones de los objetos, acceder a las
variables y funciones de la clase padre, etc
PHP cuenta con muchos ms conceptos que los vistos aqu y no estara mal que
MIRAR la documentacin oficial para ver algunos conceptos que no hemos visto en
este curso, como el uso de mtodos mgicos.

S-ar putea să vă placă și