8 de noviembre de 2014

Finalizando las entregas de PHP

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

  • Google
  • Desarrollo Web
  • Codigo Facilito
  • Udemy
  • KillerPHP
  • PHP Academy
  • CodeAcademy

2 comentarios:

Gracias por visitar mi blog y animarte a comentar. Por favor se respetuoso con sus comentarios. Cualquier error es preferible reportárlo que criticarlo por el bien de todos.



Licencia y responsabilidades

Licencia Creative Commons
netSys blog por Álvaro Castillo se encuentra bajo una Licencia Creative Commons Atribución-CompartirIgual 3.0 Unported.

El propietario de este blog no se responsabiliza de los daños que puedan generarse u ocurrir por la información expuesta aquí, en caso de ser utilizada la responsabilidad recae bajo quién la use.

Se les informa de posibles publicaciones donde queden expuestas imágenes a terceros o marcas comerciales que siempre tendrán sus fuentes, y sus atribuciones.

Por último, en caso de confusión por la temática que se trate de los artículos, tutoriales...etc dejaremos claro que este sitio Web no colabora directamente con ningún proyecto de forma oficial.