• Save
Adentrándonos a PHP 5
Upcoming SlideShare
Loading in...5
×
 

Adentrándonos a PHP 5

on

  • 4,673 views

Adentrándonos a algunos conceptos importantes en PHP 5. Lineamientos Principales.

Adentrándonos a algunos conceptos importantes en PHP 5. Lineamientos Principales.

Statistics

Views

Total Views
4,673
Views on SlideShare
3,660
Embed Views
1,013

Actions

Likes
7
Downloads
4
Comments
1

10 Embeds 1,013

http://www.rodrigomiranda.cl 952
http://gestion.poodu.cl 29
http://www.slideshare.net 15
http://www.avnetsistemas.es 8
http://localhost 3
https://twitter.com 2
http://saia.uft.edu.ve 1
http://webcache.googleusercontent.com 1
http://www.linkedin.com 1
http://sed.ucla.edu.ve 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

CC Attribution-NonCommercial LicenseCC Attribution-NonCommercial License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • si no se puede descargar, no hay razon de ponerlo
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • -.

Adentrándonos a PHP 5 Adentrándonos a PHP 5 Presentation Transcript

  • PHP5 Unidad 2: Adentrándonos Rodrigo Miranda [email_address]
  • Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objetos
    • POO es una forma especial de programar, más cercana a como expresaríamos las cosas en la vida real que otros tipos de programación.
    • Nos ayuda a crear códigos reutilizables.
    Rodrigo Miranda Programación Orientada a Objeto (POO): Blog: www.rodrigomiranda.cl
    • PHP 4 introdujo la programación orientada a objetos, pero con bastante limitaciones.
    • PHP 5 rediseño todo lo referente a la POO para reflejar con más precisión este paradigma.
    • PHP 5, recordemos, fue lanzado en junio del 2003 y su primera versión estable lanzada en julio 2004.
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Dos ejemplos que especifican pensar al estilo de POO.
    • Un automóvil.
    • Una Fracción.
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Automóvil :
    • Propiedades: Todas las carácteríscticas como el color o el modelo.
    • Métodos: Las funcionalidades asociadas como avanzar, retroceder o parar.
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Fracción : numerador/denominador
    • Propiedades: numerador y denominador.
    • Métodos: simplificarse, sumarse con otra fracción o número, restarse con otra fracción, etc.
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Clases
    • Se define como el diseño base de las propiedades y acciones que el objeto poseerá y realizará respectivamente.
    • Una clase puede representar un concepto del mundo real o un concepto de implementación.
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Definición Clase básica PHP 4
    • <?php
    • class Auto {
    • var $puertas = 5 ;
    • function moverse($parametros) {
    • operaciones …
    • return $resultado; //opcional
    • }
    • }
    • ?>
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Definición Clase PHP 5
    • <?php
    • class Auto {
    • public $puertas = 5 ;
    • public function moverse($parametros) {
    • operaciones …
    • return $resultado; //opcional
    • }
    • }
    • ?>
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Métodos private, protected y public
    • Niveles de Acceso: En PHP 5, el modelo de objetos proporciona ahora tres niveles de acceso. Restringiendo los datos a los que se puede acceder y desde dónde se puede acceder.
    • Atención: PHP 5 ha desaprobado la NO utilización de niveles de acceso para la definición de variables y funciones (propiedades y métodos).
    • ?>
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • public: A los miembros de una clase declarados como público se puede acceder (llamarse o modificarse) internamente por el objeto o desde fuera del objeto.
    • private: A los miembros de una clase declarados como private se puede acceder sólo desde dentro de una instancia de dicha clase.
    • protected: PA los miembros de una clase declarados como protected se puede acceder desde dentro de una instancia de dicha clase o desde cualquier clase hija.
    • ?>
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Definición Níveles de acceso.
    • <?php
    • class Auto {
    • private $puertas = 5 ;
    • public function moverse($parametros) {
    • operaciones …
    • return $resultado; //opcional
    • }
    • }
    • ?>
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Métodos Estáticos
    • Se han diseñado para llamarse desde fuera del contexto de la instancia de un objeto.
    • No se asocian a una instancia de un objeto, pueden ser llamado desde fuera del contexto de una instancia de un objeto.
    • No utilizan la variable $this para hacer referencia a las instancia actual del objeto.
    • ?>
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Declarando un método estático
    • <?php
    • …… ..
    • static public function moverse($parametros) {
    • operaciones …
    • return $resultado; //opcional
    • }
    • …… ..
    • Autos :: moverse($parametros);
    • ?>
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
  • Rodrigo Miranda Blog: www.rodrigomiranda.cl Herencia de Clase Programación Orientada a Objeto (POO):
    • Herencia de Clase
    • La herencia es la capacidad de que una definición de clase extienda otra funcionalidad de definición de clase.
    • Todos los métodos, propiedades y constante de la clase padre se encuentran disponibles también desde la clase hija.
    • ?>
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Herencia de Clase
    • Las clases hijas pueden volver a implantar algunos o todos los métodos, propiedades y constantes de una clase padre para proporcionar una funcionalidad adicional o diferente.
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Herencia de Clases
    • <?php
    • class Transporte {
    • protected $numeroPuertas;
    • public function moverse(){
    • echo “Comienzo a andar”;
    • }
    • }
    • class Automovil extends Transporte{
    • public function encender(){
    • ………… .
    • }
    • }
    • ?>
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Herencia de Clases
    • <?php
    • $movil = new Automovil();
    • $movil->moverse();
    • ?>
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Herencia de Clases
    • <?php
    • class Transporte {
    • protected $numeroPuertas;
    • public function moverse(){
    • echo “Comienzo a andar”;
    • }
    • }
    • class Automovil extends Transporte{
    • public function moverse(){
    • ………… .
    • }
    • }
    • ?>
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
  • Rodrigo Miranda Blog: www.rodrigomiranda.cl Clases Avanzadas Programación Orientada a Objeto (POO):
    • Características de Clases Avanzadas.
    • Las clases abstractas se diseñan para proporcionar una súper clase que defina características abstractas de las clases heredadas.
    • Nunca se pueden crear instancias de ellas directamente.
    • ?>
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Clases abstractas.
    • <?php
    • abstract class Number {
    • private $value;
    • abstract public function value();
    • public function reset(){
    • $this-> value = NULL ;
    • }
    • }
    • class Integer extends Number{
    • public function moverse(){
    • ………… .
    • }
    • }
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Interfaces.
    • Al contrario de las clases abstractas que crean conceptos abstractos que PUEDEN ser complementados o sobreescrito por clases hijas. Las interfaces se utilizan para declarar el conjunto de métodos que DEBERÁN definir (de manera obligatoria) las clases que implementan la interfaz.
    • En una interfaz, no es posible definir métodos, sólo declararlos con sus nombres y argumentos. Además, todos los métodos de una interfaz deben ser públicos.
    • ?>
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Interface: Para utilizar las interfaces, deben declararse con la palabra clave interface .
    • <?php
    • Interface Ejemplo1 {
    • public function metodo1($variable);
    • public function metodo2();
    • }
    • class MiClase implements Ejemplo1{
    • public function metodo1($variable){
    • ……
    • }
    • public function metodo2(){
    • ……
    • }
    • }
    • ?>
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Interface: Las clases pueden implementar más de una interfaz, separándolas cada una de ellas con una coma .
    • <?php
    • Interface Ejemplo1 {
    • public function metodo1($variable);
    • public function metodo2();
    • }
    • Interface Ejemplo2 {
    • public function metodo3();
    • public function metodo4();
    • }
    • class MiClase implements Ejemplo1, Ejemplo2 {
    • ……
    • }
    • ?>
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Clases y Métodos Finales.
    • Al igual como pasa en otros lenguajes de programación, las clases o métodos declarados como finales, se utilizan para otorgarle al desarrollador un medio de control sobre la herencia.
    • Las Clases declaradas como finales no permiten que se declaren clases derivadas de ellas.
    • Los métodos declarados como finales, pertenencientes a una clase padre, no pueden ser sobreescritos (declarados) por una clase hija.
    • Para definir como final un elemento, simplemente añadimos la palabra clave final a la definición de un método o clase.
    • ?>
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Clase final: : Las sgte clase no puede ser heredada por ninguna potencial clase hija.
    • <?php
    • final class NombreClase {
    • public function metodo1($variable){
    • … ....
    • }
    • public function metodo2(){
    • … .....
    • }
    • }
    • ?>
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Método final: Un método declarado como final no puede ser sobreescrito por una clase heredera o hija.
    • <?php
    • class NombreClase {
    • final public function metodo1($variable){
    • … ....
    • }
    • public function metodo2(){
    • … .....
    • }
    • }
    • class NombreClase2 extends NombreClase {
    • public function metodo2(){
    • … ....
    • }
    • }
    • ? >
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Algunos Métodos Especiales o Mágicos.
    • __construct: Llamado cuando instanciamos una clase.
    • __destruct : Llamado cuando borramos un objeto.
    • __toString : Llamado cuando deseamos imprimir (echo o print) en pantalla un objeto.
    • __clone : Llamado cuando queremos copiar un objeto, esperando que la copia no sea referencia del primero.
    • ?>
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Método __construct: Método que se ejecuta cada vez que se instancia una clase.
    • <?php
    • class NombreClase {
    • public $variable;
    • function __construct ($valor){
    • $this-> variable = $valor;
    • }
    • }
    • ? >
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Método __destruct Método que se ejecuta cuando un objeto ya no está siendo referenciado o cuando se borra de la memoria..
    • <?php
    • class NombreClase {
    • public $variable;
    • function __construct($valor){
    • $this-> variable = $valor;
    • }
    • function __destruct( ){
    • echo “Objeto destruido” ;
    • }
    • }
    • $primerInstancia = new NombreClase(6);
    • unset ($primeraInstancia);
    • ? >
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Método __toString: Cuando se define, PHP llamará a este método cuando se desee imprimir un objeto. ( echo o print ).
    • <?php
    • class Usuario {
    • private $nombreUsuario;
    • function __construct($nombre){
    • $this-> nombreUsuario = $nombre;
    • }
    • function __toString( ){
    • echo $this-> nombreUsuario ;
    • }
    • }
    • $objetoUsuario = new Usuario(“Poodu”);
    • echo $objetoUsuario ;
    • ?>
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Método __clone En PHP 5 todas las variables que representan objetos son, en realidad, referencias a ellos.
    • <?php
    • $objeto2 = $objeto1; // $objeto1 es una instancia de una clase.
    • ? >
    • En PHP 4 cuando queríamos referenciar objetos, debíamos hacerlo de forma explícita con el operador &(ampersand).
    • <?php
    • $objeto2 = &$objeto1; // $objeto1 es una instancia de una clase.
    • ?>
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Ejemplo clone
    • <?php
    • class Auto {
    • public $numeroPuertas;
    • private $nombreAuto = “Opel” ;
    • function __construct($valor){
    • $this-> numeroPuertas = $valor;
    • }
    • public function getMostrar ( ){
    • echo $this-> numeroPuertas;
    • }
    • }
    • $objeto = new Auto(5);
    • $objeto->numeroPuertas = 4;
    • $objeto2 = clone $objeto;
    • ?>
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Ejemplo __clone
    • <?php
    • class Auto {
    • public $numeroPuertas;
    • public $fechaCreacion;
    • function __construct(){
    • $this-> fechaCreacion = date (“Y-m-d H:i:s”);
    • }
    • function __clone ( ){
    • $this-> fechaCreacion = date (“Y-m-d H:i:s”);
    • }
    • }
    • $objeto = new Auto();
    • $objeto2 = clone $objeto;
    • echo $objeto->fechaCreacion;
    • echo $objeto2->fechaCreacion;
    • ?>
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Carga automática de Clases.
    • Antes de PHP5, debíamos incluir una larga lista de include o require al principio de cada script php que deseaba utilizar diferentes clases.
    • Actualmente se puede definir una función o método __autoload(), la cual es llamada automáticamente en caso de que intente usar una clase que no ha sido definida aún.
    • PHP5 con esto da una última oportunidad de cargar una clase antes de que PHP lance un error.
    • ?>
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Antes, proceso tedioso.
    • <?php
    • require ( ‘Utilidades.class.php’ );
    • require ( ‘FuncionesGenerales.class.php’ );
    • require ( ‘Usuarios.class.php’ );
    • $objeto = new Usuario();
    • $objeto2 = new Fecha();
    • ?>
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • En PHP 5, función __autoload.
    • <?php
    • function __autoload ($nombreClase){
    • require ( “$nombreClase.class.php” );
    • }
    • $usuario = new Usuario();
    • ?>
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Excepciones.
    • Las excepciones son un concepto nuevo en PHP 5. Es la solución orientada a objetos para el control de errores.
    • Trabaja directamente con la pila de llamadas.
    • En la práctica son instancias de clases que contienen información sobre un error producido internamente en una clase llamada Exception.
    • Las excepciones proporcionan un mensaje de error mucho más sólido que las anteriores funciones en PHP4.
    • ?>
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Excepciones.
    • Para lanzar excepciones dentro de nuestras secuencias de comandos o bloques de códigos utilizamos la sentencia throw , pasando una instancia de una excepción a arrojar.
    • Para el control de errores, la esencia de las excepciones, debemos utilizar bloques try/catch .
    • ?>
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Excepciones.
    • Pila de llamadas: Es un registro del orden por el que se han llamado a las funciones o a los métodos en una secuencia de comandos.
    • <?php
    • function primeraFuncion(){
    • segundaFuncion();
    • }
    • function segundaFuncion(){
    • terceraFuncion();
    • }
    • function terceraFuncion(){
    • echo “Llego al final de las llamadas” ;
    • }
    • primeraFuncion();
    • ?>
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Excepciones.
    • Pila de llamadas: El orden de las llamadas apiladas.
    • <?php
    • terceraFuncion();
    • segundaFuncion();
    • primeraFuncion();
    • ?>
    • Por lo tanto cuando se buscan errores en PHP y, posteriormente, en Symfony, es mejor comenzar de arriba hacia abajo, hasta que algún mensaje delate al culpable.
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Excepciones.
    • Bloque try/catch: La sintaxis del bloque puede tener una o más directiva catch de captura.
    • <?php
    • try {
    • /* código a ejecutar */
    • } catch (NombreClase $variable) {
    • /* código a ejecutar con la ejecución capturada */
    • } catch (OtraClase $variable){
    • /* código a ejecutar con la ejecución capturada */
    • }
    • ?>
    • NombreClase y OtraClase, son cualquier clase heredera de Exception (que es una clase interna).
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Excepciones: A continuación se enlista el proceso o flujo tras la utilización de un bloque try/catch :
    • Ejecución del código dentro de la parte try del bloque.
    • Si no se produce algún error continúa con la ejecución del código del programa.
    • Si se produce una excepción, compara la clase de la excepción con las enlistadas en las sentencias catch.
    • Si el bloque try captura la excepción arrojada, ejecuta el código dentro del bloque catch que ha capturado el error, o sea que clase definida en el catch considere la clase del error.
    • Si el bloque try no captura la excepción, continua propagando la excepción a través de la pila de llamadas.
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Excepciones.
    • Lanzando una excepción .
    • <?php
    • try {
    • $error = ’Lanzando una excepción';
    • throw new Exception($error);
    • echo ’No se ejecuto la excepción’;
    • } catch (Exception $e) {
    • echo ’El mensaje de la excepción es: ', $e->getMessage(), &quot; &quot;;
    • }
    • echo ’Hola Mundo';
    • ?>
    • Como el código anterior no tiene probabilidad de fallar dado que no realizamos dentro del bloque try nada importante, lanzamos para este ejemplo la excepción con la directiva throw.
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Excepciones.
    • Todas las excepciones heredan de la clase interna de PHP Exception, por lo que si ocupamos esta clase en las definiciones catch estaremos seguros de capturar en ella todas las excepciones posibles.
    • No se recomienda la sobreutilización de la clase Exception en las definiciones catch por la generalización de los mensajes de error.
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Recomendaciones para Excepciones.
    • Se recomienda utilizar bloques try/catch para controlar por ejemplo conexiones y cierre de conexión a una base de datos.
    • Para controlar el insert en varias tablas con la posibilidad de hacer commit si todo salio bien o rollback en caso de error.
    • Para el trabajo con archivos.
    • etc.
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Sintaxis Normal y Alternativa.
    • Las diferencias entre estas sintaxis se encuentran en la codificación de las estructuras de Control.
    • Una estructura de control escrita con sintaxis normal :
    • <?php
    • If ($a == 5 ) {
    • $a = $a + 123;
    • echo ’El valor de a es : ’. $a;
    • } else {
    • echo ’a No era igual a 5’;
    • }
    • ?>
    • ?>
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Sintaxis Normal y Alternativa.
    • La sintaxis alternativa se utiliza para facilitar la lectura del código. En otros lenguajes como python utilizan la identación además para estructurar los códigos de ejecución.
    • Una estructura de control escrita con sintaxis alternativa :
    • <?php
    • If ($a == 5 ) :
    • $a = $a + 123;
    • echo ’El valor de a es : ’. $a;
    • else:
    • echo ’a No era igual a 5’;
    • endif;
    • ?>
    • ?>
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Sintaxis Normal y Alternativa.
    • for y foreach:
    • <?php
    • for ($i=1; $i<=5; $i++ ) :
    • echo ’El valor de i es : ’. $a. ’ ’ ;
    • endfor;
    • ?>
    • <?php
    • foreach ($arregloObjetos as $objeto ) :
    • echo $objeto;
    • endforeach;
    • ?>
    • ?>
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Sintaxis Normal y Alternativa.
    • while:
    • <?php
    • while ($i<=5 ) :
    • echo ’El valor de i es : ’. $a. ’ ’ ;
    • endwhile;
    • ?>
    • <?php
    • foreach ($arregloObjetos as $objeto ) :
    • echo $objeto;
    • endforeach;
    • ?>
    • ?>
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
    • Sintaxis Normal y Alternativa.
    • Symfony recomienda: Si necesitas ejecutar algún código PHP en la plantilla, es mejor evitar la sintaxis usual o normal en PHP. En su lugar, es preferible utilizar la sintaxis alternativa para mantener el código legible para personas sin conocimientos en PHP. De esta forma, no tan sólo el código final estará correctamente indentado, sino que ayudará a mantener el código complejo en la acción, dado que sólo las estructuras de control (if, foreach, while y demás) poseen una sintaxis alternativa.
    • ?>
    Rodrigo Miranda Blog: www.rodrigomiranda.cl Programación Orientada a Objeto (POO):
  • Rodrigo Miranda Blog: www.rodrigomiranda.cl Preguntas? Programación Orientada a Objeto (POO):