03 enero 2016

PHP y POO ["Programación Orientada a Objetos"] + [Ejemplos]





¿Que es PHP ?

PHP (acrónimo recursivo de PHP: Hypertext Preprocessor) es un lenguaje de código abierto muy popular especialmente adecuado para el desarrollo web y que puede ser incrustado en HTML. 


Lo mejor de utilizar PHP es su extrema simplicidad para el principiante, pero a su vez ofrece muchas características avanzadas para los programadores profesionales. No sienta miedo de leer la larga lista de características de PHP. En unas pocas horas podrá empezar a escribir sus primeros scripts. 




Un ejemplo de hola mundo sencillo en PHP : 




¿Qué puede hacer PHP?

Cualquier cosa. PHP está enfocado principalmente a la programación de scripts del lado del servidor, por lo que se puede hacer cualquier cosa que pueda hacer otro programa CGI, como recopilar datos de formularios, generar páginas con contenidos dinámicos, o enviar y recibir cookies. Aunque PHP puede hacer mucho más. 






Existen principalmente tres campos principales donde se usan scripts de PHP. 

[+] Scripts del lado del servidor. Este es el campo más tradicional y el foco principal. Son necesarias tres cosas para que esto funcione. El analizador de PHP (módulo CGI o servidor), un servidor web y un navegador web. Es necesario ejecutar el servidor con una instalación de PHP conectada. Se puede acceder al resultado del programa de PHP con un navegador, viendo la página de PHP a través del servidor. Todo esto se puede ejecutar en su máquina si está experimentado con la programación de PHP. 

[+] Con PHP no se está limitado a generar HTML. Entre las capacidades de PHP se incluyen la creación de imágenes, ficheros PDF e incluso películas Flash (usando libswf y Ming) generadas sobre la marcha. También se puede generar fácilmente cualquier tipo de texto, como XHTML y cualquier otro tipo de fichero XML. PHP puede autogenerar estos ficheros y guardarlos en el sistema de ficheros en vez de imprimirlos en pantalla, creando una caché en el lado del servidor para contenido dinámico. 

[+] Escribir aplicaciones de escritorio. Probablemente PHP no sea el lenguaje más apropiado para crear aplicaciones de escritorio con una interfaz gráfica de usuario, pero si se conoce bien PHP, y se quisiera utilizar algunas características avanzadas de PHP en aplicaciones del lado del cliente, se puede utilizar PHP-GTK para escribir dichos programas. También es posible de esta manera escribir aplicaciones independientes de una plataforma. PHP-GTK es una extensión de PHP, no disponible en la distribución principal. 

PHP puede emplearse en todos los sistemas operativos principales, incluyendo Linux, muchas variantes de Unix (incluyendo HP-UX, Solaris y OpenBSD), Microsoft Windows, Mac OS X, RISC OS y probablemente otros más. PHP admite la mayoría de servidores web de hoy en día, incluyendo Apache, IIS, y muchos otros. Esto incluye cualquier servidor web que pueda utilizar el binario de PHP FastCGI, como lighttpd y nginx. PHP funciona tanto como módulo como procesador de CGI. 

De modo que con PHP, se tiene la libertad de elegir el sistema operativo y el servidor web. Además, se tiene la posibilidad de utilizar programación por procedimientos o programación orientada a objetos (POO), o una mezcla de ambas 




Programación Orientada a Objetos en PHP

La Programación Orientada a Objetos (POO) es un tipo de programación agregada a PHP 5 que hace de la construcción compleja, modular y reusable de aplicaciones web mucho mas fácil. Con el lanzamiento de PHP 5, los programadores en PHP finalmente tienen el poder de programar como los grandes. Asi como Java y C#, PHP finalmente tiene una completa infraestructura POO.





Al mismo tiempo aprenderás: 

[+] La diferencia entre construir una aplicación al estilo antiguo (por procedimiento) versus la manera POO. 

[+] Cuales son los principios básicos de la POO y como se usan en PHP. 

[+] Cuando debes usar POO en tus scripts PHP. 



   Crear  dos  paginas PHP

 [+] index.php

      [+] class_lib.php


La POO trata acerca de crear código modular, de manera que nuestro código PHP orientado a objetos sera contenido en archivos dedicados que serán insertados en nuestra pagina PHP usando "includes" de PHP. En este caso todo nuestro código PHP OO estará en el archivo PHP: [+] class_lib.php

OOP se revuelve alrededor de una estructura construida llamada 'clase' (class). Las clases son los encargados de definir las plantillas que posteriormente son usadas  para la definición de objetos.



Crea una clase en PHP

En vez de tener un montón de funciones, variables y código flotando de manera espontánea, para diseñar sus scripts PHP o librerías de códigos a la manera de POO, necesitaras definir/crear tus propias clases. 










             
              Defines tus propias clases comenzando con la palabra clave "class" (clase) seguida del nombre que le quiere dar a su nueva clase. 



Agrega datos a tu clase

Las clases son los planos de los objetos PHP- mas sobre esto luego. Una de las grandes diferencias entre las funciones y clases es que la clase contiene ambos datos (variables) y funciones que forman un paquete llamado un "objeto". Cuando tu creas una variable dentro de una clase, es llamada una "propiedad". 











                     Nota: Los datos/variables dentro de una clase (ej: var $name ) son llamados "propiedades".



Agrega funciones y métodos a tus clases.

De la misma manera que las variables obtienen un nombre diferente cuando son creadas dentro de una clase (llamadas: propiedades) las funciones también referidas como (por los nerds) con un nombre diferente cuando son creadas dentro de una clase – son llamadas ‘métodos’. 

Los métodos de las clases son usados para manipular su propios datos/propiedades. 



Nota: No olvides que en una clase, las variables son llamadas "propiedades". 




Funciones que obtienen y que establecen.

Hemos creado dos funciones/métodos interesantes: get_name() y set_name(). 

Estos métodos siguen una convención de POO que tu podrás ver en muchos lenguajes (incluyendo Java y Ruby) donde creas métodos que establecen y obtienen propiedades en una clase. 

Otra convención (una convención para nombrar) es que los nombres para obtener (get_name) y establecer (set_name) deberían ser similares a los nombres de las propiedades (name). 




Nota: Notese que los nombres que obtienen y establecen (set_name y get_name) hacen juego con el nombre de propiedad asociada (name). De esta manera, si otros programadores PHP quieren usar sus objetos, ellos sabrán que tienes un método/función llamado "set_name()" (establecer nombre), el cual se relaciona con la propiedad/variable llamada "name" (nombre). 



La variable " $this "

Ya probablemente has notado esta linea de código: $this->name = $new_name. 











El $this es una variable incluida (construida automáticamente dentro de todos los objetos) que apunta al objeto actual. O en otras palabras, $this es una variable especial de auto-referencia. Puedes usar $this para accesar a las propiedades y llamar a otros métodos de la clase actual donde te encuentras. 

Nota: Esto podría ser un poco confuso para ti... esto es porque lo estas viendo por primera vez, es una de aquellas capacidades del OO (construidas dentro del mismo PHP 5) que hace las cosas automáticamente para nosotros. Por ahora, solo piense de $this como una palabra clave OO. Cuando PHP se encuentra con esta variable, el motor PHP sabe que hacer.



Incluye tu clase en la pagina principal de PHP


Tu nunca deberías crear tus clases PHP directamente dentro de las paginas principales de PHP– esto eliminaría el propósito o esencia del uso de PHP orientado a objetos. 

En vez de esto, la mejor practica es crear paginas de PHP separadas que solo contengan las clases. De esta forma accesarias a sus objetos y clases PHP incluyéndolas en tu pagina PHP principal con un "include" o "require". 












Nota: Nota como no hemos hecho nada con nuestra clase aun. Lo haremos en el siguiente paso. 


Instancia/crea tu objeto

Las clases son planos/plantillas de objetos en PHP. Las clases no se hacen objetos hasta que realizas algo llamado: instanciamiento. 

Cuando tu instancias una clase, creas un instancia de ella (valga la redundancia), creando así el objeto. 

En otras palabras, el instanciamiento es el proceso de crear de una clase, una objeto en memoria. Que memoria? La memoria del servidor por supuesto. 















Nota: La variable $stefan viene a ser la referencia / manejador de nuestro nuevo objeto de persona creado. Yo llamo a $stefan un "manejador", porque usaremos a $stefan para controlar y usar el objeto persona. 

Si ejecutas el código PHP ahora, no podrás ver nada mostrado en la pagina. La razón para esto, es que no le hemos dicho a PHP que haga algo con el objeto que acabamos de crear. 



¿La Palabra Clave "New" (Nuevo)?

Para crear un objeto fuera de una clase debe usarse la palabra clave "new". 

Cuando creas/instancias una clase, puedes opcionalmente agregar llaves al nombre de la clase, como yo hice en el ejemplo de abajo. Para estar claro, tu puedes ver en el código de abajo como yo pude crear múltiples objetos de la misma clase. 

Desde el punto de vista del motor PHP, cada objeto es su propia entidad. Tiene sentido? 











Nota: Cuando estés creando un objeto, asegúrate de no encerrar el nombre de la clase en comillas simples o dobles. Realizar esto ocasionaría un error ya que en vez de ser una clase seria una cadena de caracteres. 


Por ejemplo: $stefan = new 'person'; 

(si lo haces de esa manera te va a generar un error en la linea de código.)




Estableciendo las propiedades del objeto.


Ahora que hemos creado/instanciado nuestros dos objetos separados "persona", podemos establecer sus propiedades usando los métodos (set_name y get_name) que nosotros hemos creado. 

Tenga en mente que aunque ambos de nuestros objetos personas ( $stefan y $jimmy ) son basados en la misma clase "person", a lo que concierne a PHP, son objetos totalmente diferentes. 













Accesando los datos del objeto.

Ahora nosotros usamos el método get_name para obtener acceso a los datos mantenidos en nuestros objetos... son los mismos datos que nosotros insertamos en nuestros objetos usando el método set_name. 


Cuando accesamos a los métodos y propiedades de una clase, usamos el operador [ -> ] llamado Operador Flecha o técnicamente Operador de Objetos. 














Nota: El operador flecha [ -> ] no es el mismo operador usado con los arreglos asociativos:     [ => ] .










0 comentarios :