domingo, 28 de septiembre de 2014

[Parte 10] PHP

PHP es un tanto inusual como lenguaje este puede ser utilizado tanto como procedimiento como lo hemos venido viendo hasta ahora, y como programacion orientada a objetos (POO). Hay meritos a cuanto enfoques, y uno debe estar familiarizado con ambos, eventualmente con el tiempo.

El PHP orientado a objetos requiere mucho tiempo e informacion por lo cual veremos algo breve con lo cual podremos trabajar un poco con el. 

Sintaxis y fundamentos

Si nunca antes ha hecho alguna aplicacion realizada en enfoque de programacion orientada a objetos, tanto el concepto y la sintaxis le van a parecer bastante extraños. Simplemente poner todas las aplicaciones o scripts, significa tomar acciones con la informacion: validacion de ella, manipularla, almacenarla en una base de datos, y asi sucesivamente. Filosoficamente, la programacion de procedimiento esta escrito en enfoque a las acciones: hacen esto, entonces esto, entonces esto, la programacion orientada a objetos es centrada a datos, centrandose mas en los tipos de informacion que utiliza.

Fundamentos de POO

Programacion orientada a objetos comienza con la definicion de una clase, que es una plantilla para un tipo particular de datos: un empleado, un usuario, una pagina de contenido, y asi sucesivamente. Una definicion de clase contiene ambas variables y funciones. Sintacticamente una variable en una definicion de clase se llama atributo o propiedad, y una funcion en una definicion de una clase se llama un metodo. Combinados los atributos y metodos son los miembros de la clase. Como ejemplo teorico, es posible que tenga una clase llamada Coches. Tenga en cuenta que los nombres de las clases convencionalmente deben comenzar con una letra mayuscula. Las propiedades de una clase serian incluir marca, modelo, año, odometro, etcetera: toda la informacion que pueda ser conocida sobre un coche. Las propiedades de un coche pueden ser establecidas, cambiando y recuperando y los valores de las propiedades que pueden distinguir un coche de otro coche. Los metodos de un coche son las cosas que el coche puede hacer: Arrancar(), Estacionarse(), Apagar(), Manejarse(). Estas acciones son comunes en todos los coches. 

La reutilizacion de codigo particularmente codigos creados por otros, es uno de los beneficios clave de la programacion orientada a objetos. Que en realidad requiere mucho esfuerzo, por lo menos hacerlo bien, es dominar el proceso de diseño: entender los miembros para definir y mas importante la forma de aplicar conceptos POO sofisticadas tales como:

* Herencia
* Control de Acceso
* Resolucion de alcance
* Abstraccion
* Y asi sucesivamente

Sintaxis en POO

Digamos que alguien ya ha pasado por el proceso de diseño y definicion de una clase. La mayoria de las clases no se utilizan directamente, mas bien se crea una instancia de esa clase, un tipo de variable especifica de la clase. Esa instancia es llamada Objeto, en PHP se crea una instancia utilizando la palabra clave new:

$obj = new NombreClase();
$mio = new Coche();

Mientras que el codigo $nombre = 'Larry'; crea una variable de tipo string, el codigo anterior crea una variable de tipo Coche.
Todo eso es parte de la definicion de la clase Coches. Cada propiedad (es decir, variables) y metodo (es decir, funcion) es incrustado en la variable $mio. Detras de las escenas (es decir, la definicion de la clase), un metodo especial llamado constructor se invoca automaticamente cuando un nuevo objeto de este tipo es generado. El constructor normalmente ofrece la configuracion inicial que seria requerido por la siguiente el uso de este objeto. Por ejemplo, en una clase MySQLi establecer un constructor una coneccion para la base de datos y el constructor de la clase DateTime creando referencia a la hora y fecha exacta.

Si el constructor toma argumentos como cualquier funcion, los puede proporcionar, cuando el objeto se crea:


$mio = new Coche('Honda','Fit',2008);
Una vez que tenga un objeto usted puede referirse a sus propiedades (variables) y llamar a sus metodos (funciones), utilizando la sintaxis:

$objeto_nombre->miembro_nombre;
$mio->color = 'Lila';
$mio->Arrancar();
La primera linea teoricamente asigna el valor Lila a la propiedad color del objeto. La segunda linea invoca el metodo Arrancar(), como a cualquier funcion que llamamos se requieren los parentesis. Si el metodo toma argumentos se los podemos asignar tambien:

$mio->Manejarse('adelante');
A veces vamos a usar un objeto y podemos manejar sus propiedades como lo hariamos con cualquier otra variable:

$mio->odometro += 20;
echo "Mi carro actualmente contiene $mio->odometro de millas en el odometro";

 

Programacion orientada a objetos VS programacion de procedimiento

Las discusiones en cuanto a los meritos de la programacion orientada a objetos frente a la programacion de procedimiento puede escalar verbalmente a guerras, con cada lado ferozmente a la defensa de su enfoque. PHP es el unico que tiene una opcion (por comparacion el lenguaje C es estrictamente lenguaje procedural, y Java orientado a objetos) en mi opinion cada estilo tiene sus fortalezas y debilidades pero tampoco es "mejor" que la otra. Programacion de procedimiento es posiblemente mas facil de aprender y utilizar especialmente para proyectos mas pequeños, pero el codigo de procedimiento puede ser mas dificil de mantener y ampliar, sobre todo en sitios mas complicados y tiene el potencial de ser buggier.
El codigo escrito usando programacion orientada a objetos, por otro lado, puede ser mas facil de mantener, especificamente en proyectos mas grandes, y puede ser mas apropiado en entornos de grupo. Pero programacion orientada a objetos puede ser mas dificil de dominar, y cuando no se hace bien, es mucho mas dificil de remediar. Con el tiempo ya llegaran sus propias opiniones y preferencias. La verdadera leccion para mi es aprovechar que PHP permite ambas sintaxis y no limitarse a un solo estilo sin importar la situacion.
 

Para ver como se pone en practica el uso de PHP POO puedes ver el tutorial: http://arthusu.blogspot.mx/2013/08/tutorial-pdo-mysql.html de manera que estamos utilizando PHP POO en el uso de PDO. 
 

Cosas utiles a saber:

El operador de resolucion de ambito (tambien denominado Paamayim Nekudotayim) o en terminos simples, el doble dos puntos, es un token que permite acceder a elementos estaticos, constantes, y sobrescribir propiedades o metodos de una clase:

$nombredeclase::VALOR_CONSTANTE;

Aqui termina la parte 10 de PHP y como dijimos al inicio, esto no es mas que lo mas breve posible ya que PHP orientado a objetos es mucho mas extenso de lo que llevaria varias partes para poder explicarlo completamente. Espero que les haya sido util esta parte.
 
 
 

No hay comentarios:

Publicar un comentario