Y ya tocamos el techo sobre estas pequeñas entregas de PHP. Aún queda mucho más por supuesto, como realizar consultas a bases de datos mediante mysqli o PDO, depurando errores, funciones que dependan de nuestros intereses como programador.... Teniendo esta pequeña base y como gusto buscar en Google. Se puede empezar hacer desde ya un pequeño proyecto.
Lo que si he visto en varias ofertas de trabajo, es que se sepa manejar un framework de PHP como Laravel, CakePHP, Symfony, ZendPHP.... os lo dejo como apunte por si queréis investigarlos. De momento no lo mencionaremos dentro de estas pequeñas entregas de PHP.
Objetos
Introducción
Hacer uso de
objetos en nuestra forma de programar hace más legible, simple,
eficiente y sobre todo más sencillo para todo incluyendo resolución
de errores. Cada objeto tiene una serie de variables como si fuera
una persona. Bien, pongamos como objeto a una persona tiene un tipo
de medida para el color de ojos, longitud de pelo, color del pelo,
tez, altura, peso... esto
serían variables. Además
de eso, nosotros los seres humanos realizamos
una serie de funciones como correr, saltar, pensar, calcular...
En objetos, las variables son
características o propiedades y las funciones representan los
métodos de un objeto.
Pero
no sólo eso constituyen la parte teórica de los objetos. Existen
una serie de definiciones que hay que comprender como la
independencia de un objeto de otro, el polimorfismo entre otras más
definiciones.
Definiendo y creando una clase
Hay que añadir
que un objeto no existe así porque sí. Hay que definirlo, e
instanciarlo o materializarlo. Este es un ejemplo de nuestro objeto
persona.
<?php class Persona { public $color_ojos = "Marrones"; public $color_pelo = "Castaño"; public $altura = "1.70"; public $peso = "80kg"; } ?> |
Hemos
definido nuestra clase, pero no nuestro objeto.
Para ello deberemos llamarlo de la siguiente manera:
<?php class Persona { public $color_ojos = "Marrones"; public $color_pelo = "Castaño"; public $estatura = "1.70"; public $peso = "80kg"; }
$Rodolfo =
new Persona();
?> |
Se
ha creado el objeto “Rodolfo” con las características de la clase Persona. Más
adelante veremos que es 'public'
Accediendo a los propiedades de los objetos
Como hemos dicho anteriormente, los objetos poseen
una serie de propiedades que hemos configurado. Pero, para acceder a
ellas sea para mostrar o alterar dichas propiedades deberemos
aprender la forma en la que se accede.
Si queremos ver que estatura tiene nuestra persona
“Rodolfo”, deberemos utilizar la siguiente sintaxis:
<?php class Persona { public $color_ojos = "Marrones"; public $color_pelo = "Castaño"; public $estatura = "1.70"; public $peso = "80kg"; }
$Rodolfo =
new Persona();
echo
$Rodolfo->estatura;
?> |
Nos
mostrará 1.70
Creando métodos
Los métodos como hemos dicho anteriormente, son
las funciones que tiene un objeto. En nuestro ejemplo de Persona,
podríamos añadir un método que nos permita cambiar el color del
pelo de Rodolfo, o una función que sea saltar y permita adelgazar el
peso.
Para que podamos acceder a las propiedades a
través de los métodos hay que utilizar la palabra this para
referirse a este objeto.
<?php class Persona { public $color_ojos = "Marrones"; public $color_pelo = "Castaño"; public $estatura = "1.70"; public $peso = "80kg";
public
function colorPelo($color)
{
$this->color_pelo
= $color;
}
}
$Rodolfo =
new Persona();
echo
$Rodolfo->estatura;
$Rodolfo->colorPelo(“Verde”);
echo
$Rodolfo->color_pelo;
?> |
Concepto de herencia
La herencia es la adquisición de forma directa
las propiedades y métodos que tiene una clase. PHP permite
únicamente un sólo nivel de herencia. Es decir, que sólo puede
coexistir un padre y un hijo, pero no nietos, ni bisnietos. Esto nos ayuda un mogollón porque ahorra muchísimo código.
Para visualizar mejor el concepto de la herencia,
vamos a crear de la clase persona. Un tipo de persona llamada
docente. El cuál tendrá los mismos atributos que una persona
porque... ¡es una persona! Y le pondremos atributos adicionales como
titulación.
Para declarar una herencia de clase, deberemos
añadir la sentencia extends seguida
de la clase a heredar.
<?php class Persona { public $color_ojos = "Marrones"; public $color_pelo = "Castaño"; public $estatura = "1.70"; public $peso = "80kg"; public function colorPelo($color) { $this->color_pelo = $color; } } class Docente extends Persona { public $titulacion; public $experiencia; } $Claudia = new Docente(); echo $Claudia->color_pelo; ?> |
Como
vemos, se nos muestra la palabra Castaño, porque accede a la
propiedad asignada por defecto de Color del pelo.
En cuánto a las clases, si nosotros no queremos
que la otra clase no herede ciertas propiedades o métodos existen
una serie de permisos que favorecen estas prohibiciones. Las veremos
en el siguiente apartado.
Diferentes permisos de acceso a las propiedades, métodos
Las propiedades que no queramos que sean
modificables por los usuarios que accedan a nuestro programa no
deberá permanecer con la opción de “public”.
Porque de ser así, tendríamos un falle y grave agujero de
seguridad.
Para eso tenemos
diferentes tipos de opciones que tendrán la función de darle más
permisividad a esas propiedades y/o métodos.
Public por
ejemplo permite visualizar y cambiar los valores de propiedades X, en
contra posición de la opción “protected”
que restringe la modificación y
visualización de
las propiedades mediante métodos pero permitiendo
la herencia.
Sin embargo, la
opción “private”. No
permite herencia y hay que acceder
al igual que en “protected” mediante
métodos para visualizar y modificar la información. Existe una
forma que permite acceder a las propiedades u obtenerlas con setters
y getters. Pero
estos rompen el principio de encapsulación de la seguridad de
nuestro programa y no es recomendable su uso.
Finalizando
El universo de PHP es muy amplio y más
si conviven la forma procedural con la orientada a objetos, existen
multitud de funciones, parámetros, y muchos mecanismos para atajar
un problema en diferentes niveles.
Referencias
- Desarrollo Web
- Codigo Facilito
- Udemy
- KillerPHP
- PHP Academy
- CodeAcademy
parabens!
ResponderEliminarMuchas gracias!
Eliminar