• No se han encontrado resultados

Curso creado por Enrique Areyán.

N/A
N/A
Protected

Academic year: 2021

Share "Curso creado por Enrique Areyán."

Copied!
156
0
0

Texto completo

(1)

Este  curso  forma  parte  de  una  serie  de  cursos  cuyo  obje4vo  principal  es  el  de  enseñar   el  lenguaje  de  programación  PHP  a  personas  con  conocimientos  básicos  de  

programación,  y  prepararlos  para  llevar  a  cabo  proyectos  de  gran  envergadura.  Para   ello  se  enseñará  PHP  básico  (este  curso),  PHP  orientado  a  Objetos,  las  mejores  y  más   novedosas  prac4cas  en  PHP,  Patrones  de  Diseño  y  el  Zend  Framework.  

1   ©  Curso  creado  por  Enrique  Areyán.  

(2)

Pueden  contactarme  a  través  del  correo  electrónico  [email protected]  

2   ©  Curso  creado  por  Enrique  Areyán.  

(3)

Curso  PHP  Básico  

(4)

Este  curso  de  PHP  Orientado  a  Objetos  pretender  enseñar  las  herramientas  básicas   para  desarrollar  sistemas  web  bajo  el  paradigma  de  programación  orientada  a  objetos   en  lenguaje  PHP.  Aquí  se  cubrirán  los  aspectos  básicos  más  importantes  de  la  

programación  orientada  a  objetos  tanto  desde  el  punto  de  vista  teórico  como   prác4co.    

Se  asume  que  el  par4cipante  4ene  conocimientos  básicos  de  programación  en  PHP  o   que  ha  par4cipado  en  el  curso  anterior  a  éste  de  PHP  Básico.  

4   ©  Curso  creado  por  Enrique  Areyán.  

(5)

Una  revisión  general.   Curso  PHP  Básico  

(6)

La  documentación  en  línea  sobre  PHP  es  vasta  y  de  calidad.  Si  algo  no  se  consigue  en   el  si4o  de  php,  www.php.net,  u4lizando  google  se  4enen  altas  probabilidades  de   solventar  esta  deficiencia.  

Curso  PHP  Básico  

(7)

Una  función  na4va  es  aquélla  que  ya  viene  incluída  como  parte  de  las  librerías   internas  del  lenguaje  y  por  lo  tanto  no  debe  ser  implementada  por  el  programador.   Esto  nos  ahorra  4empo.  

Curso  PHP  Básico  

(8)

PHP  se  caracteriza  por  ser  un  lenguaje  flexible.  Esta  caracterís4ca  4ene  sus  ventajas  y   desventajas,  como  veremos  más  adelante.  

Curso  PHP  Básico  

(9)

Curso  PHP  Básico  

(10)

En  este  apartado  se  argumentarán  algunas  de  las  razones  por  las  cuales  la  

programación  con  PHP  simple  (no  orientado  a  objetos)  es  insuficiente  al  momento  de   desarrollar  sistemas  complejos.  Para  tal  fin,  exploraremos  las  estrategias  de  

programación  de  un  ejemplo  sencillo  tanto  en  programación  impera4va  como  en   POO.  

Curso  PHP  Básico  

(11)

El  código  anterior  busca  encapsular,  a  través  de  una  función,  lógica  propia  a  un  sólo   bloque  de  código.  Sin  embargo,  esta  estrategia  falla  por  varias  razones.  Visto  de  otra   forma,  al  ver  éste  código  pregúntese  lo  siguiente:  

• Qué  pasa  cuando  se  empiezan  a  tener  muchas  propiedades?   • O  si  se  comienzan  a  tener  muchas  funciones?  

• Qué  pasa  si  queremos  otro  conjunto  de  ru4nas  y  parte  de  los  nombres  de  las   funciones  se  repiten?  

Ver  archivo  CodigoImpera4vo.php  en  la  carpeta  /Ejemplos   Curso  PHP  Básico  

(12)

El  mismo  código  del  ejemplo  anterior,  pero  en  este  caso  orientado  a  objetos.  En  el   código  vemos  una  clase  llamada  Automóvil  que  posee  dos  propiedades  y  un  método.   Más  adelante  explicaremos  con  mayor  detalle  qué  significan  cada  una  de  estas  cosas.   Por  el  momento  es  interesante  observar  como  en  un  sólo  bloque  de  código  (agrupado   entre  las  palabras  claves  class  Atuomovil  {  …  })  Tenemos  agrupada  la  información  que   trabaja  sobre  un  “Automóvil”.    

Más  aún,  al  momento  de  instanciar,  es  decir,  realizar  copias  de  un  automóvil,  vemos   como  la  POO  nos  hace  la  vida  fácil.  En  el  código  anterior  $a  y  $b  son  copias  dis4ntas,   permi4endo  así  que  $a  tenga  una  propiedad  ‘modelo’  que  es  suya  propia  y  dis4nta  de   la  propiedad  ‘modelo’  de  la  variable  $b.  

CodigoOrientadoAObjetos.php   Curso  PHP  Básico  

(13)

Algunas  de  las  caracterís4cas  técnicas  básicas  a  resaltar  de  la  POO  en  general.   Curso  PHP  Básico  

(14)

Independientemente  del  lenguaje  de  programación  que  emplees,  si  éste  soporta   programación  orientada  a  objetos  entonces  las  tres  caracterís4cas  de  arriba  son   fundamentales  al  momento  de  programar.  Estas  tres  caracterís4cas  no  sólo  cambian   la  forma  de  codificar  algoritmos,  sino  que  proveen  al  programador  de  toda  una  nueva   estrategia  al  momento  de  enfrentar  las  etapas  de  análisis  y  desarrollo  de  sistemas.   Dominar  estas  técnicas  implícitas  en  la  POO  es  fundamental  para  el  éxito  del   proyecto.  

Curso  PHP  Básico  

(15)

En  este  apartado  exploraremos  las  herramientas  y  conceptos  básicos  de  la  POO  en   general  pero  siempre  con  ejemplos  concretos  en  el  lenguaje  PHP.  

Curso  PHP  Básico  

(16)

Como  ya  se  ha  reflejado  antes,  toda  clase  consta  de  la  palabra  clave  class  seguido  del   nombre  de  la  clase  y  un  bloque  de  código  entre  llaves.  

Dentro  del  bloque  de  código  se  pueden  crear  sólo  tres  4pos  de  bloques  básicos:   constantes,  variables  y  métodos.  Una  vez  creadas  dentro  de  las  llaves,  tanto  la   constante,  como  la  variable,  como  la  función  pertenecen  a  la  clase,  y  para  ser   u4lizadas  hay  que  acceder  a  través  de  la  clase.  

ClaseSimple.php   Curso  PHP  Básico  

(17)

Aquí  se  muestran  las  carácterísitcas  básicas  de  una  clase.  Una  analogía  apropiada   (pero  muy  básica)  al  momento  de  pensar  en  una  clase  es  pensar  en  un  molde  del  cuál   se  van  a  extraer  múl4ples  “copias”  u  “objetos”  similares.  A  diferencia  de  un  objeto   osico,  en  este  caso  las  copias  serán  dinámicas  y  pueden  cambiar  su  comportamiento  y   estructura  al  momento  de  ejecutar  un  programa.  

Curso  PHP  Básico  

(18)

Aquí  ‘Automovil’  es  la  clase  y  la  variable  $a  es  un  objeto  (instancia  o  copia  

personalizada)  sobre  la  clase  Automovil.  La  palabra  clave  new  hace  que  Automovil   junto  a  todas  sus  propiedades  y  funciones  se  copien  a  $a.  

Objeto.php   Curso  PHP  Básico  

(19)

Curso  PHP  Básico  

(20)

Resultado  del  ejercicio.   Curso  PHP  Básico  

(21)

Curso  PHP  Básico  

(22)

Curso  PHP  Básico  

(23)

PropiedadesDeClases.php   Curso  PHP  Básico  

(24)

Una  de  las  diferencias  entre  las  propiedades  de  una  clase  y  las  variables  comunes  es   que  las  propiedades  al  ser  declaradas  dentro  de  la  clase  no  pueden  hacer  referencia  a   otras  variables.  Fuera  de  la  clase  si  se  pueden  asignar  otros  valores:  

$miModelo  =  “Toyota”;   Class  Automovil{        //Correcto:  

     public  sta4c  $modelo;        //Incorrecto:  

     public  sta4c  $modelo  =  $miModelo;   }  

Automovil::$modelo  =  $miModelo;  

Esta  limitación  se  asignación  se  debe  a  que  el  intérprete  4ene  que  conocer  cuál  es  el   valor  de  todas  las  propiedades  de  una  clase  al  momento  de  leer  el  código.  

Curso  PHP  Básico  

(25)

Una  de  las  diferencias  entre  las  propiedades  de  una  clase  y  las  variables  comunes  es   que  las  propiedades  al  ser  declaradas  dentro  de  la  clase  no  pueden  hacer  referencia  a   otras  variables.  Fuera  de  la  clase  si  se  pueden  asignar  otros  valores:  

$miModelo  =  “Toyota”;   Class  Automovil{        //Correcto:  

     public  sta4c  $modelo;        //Incorrecto:  

     public  sta4c  $modelo  =  $miModelo;   }  

Automovil::$modelo  =  $miModelo;  

Esta  limitación  se  asignación  se  debe  a  que  el  intérprete  4ene  que  conocer  cuál  es  el   valor  de  todas  las  propiedades  de  una  clase  al  momento  de  leer  el  código.  

Curso  PHP  Básico  

(26)

Una  de  las  diferencias  entre  las  propiedades  de  una  clase  y  las  variables  comunes  es   que  las  propiedades  al  ser  declaradas  dentro  de  la  clase  no  pueden  hacer  referencia  a   otras  variables.  Fuera  de  la  clase  si  se  pueden  asignar  otros  valores:  

$miModelo  =  “Toyota”;   Class  Automovil{        //Correcto:  

     public  sta4c  $modelo;        //Incorrecto:  

     public  sta4c  $modelo  =  $miModelo;   }  

Automovil::$modelo  =  $miModelo;  

Esta  limitación  se  asignación  se  debe  a  que  el  intérprete  4ene  que  conocer  cuál  es  el   valor  de  todas  las  propiedades  de  una  clase  al  momento  de  leer  el  código.  

Curso  PHP  Básico  

(27)

Curso  PHP  Básico  

(28)

Una  de  las  diferencias  entre  las  propiedades  de  una  clase  y  las  variables  comunes  es   que  las  propiedades  al  ser  declaradas  dentro  de  la  clase  no  pueden  hacer  referencia  a   otras  variables.  Fuera  de  la  clase  si  se  pueden  asignar  otros  valores:  

$miModelo  =  “Toyota”;   Class  Automovil{        //Correcto:  

     public  sta4c  $modelo;        //Incorrecto:  

     public  sta4c  $modelo  =  $miModelo;   }  

Automovil::$modelo  =  $miModelo;  

Esta  limitación  se  asignación  se  debe  a  que  el  intérprete  4ene  que  conocer  cuál  es  el   valor  de  todas  las  propiedades  de  una  clase  al  momento  de  leer  el  código.  

EjemploSelf.php   Curso  PHP  Básico  

(29)

$a  y  $b  son  copias  dis4ntas,  permi4endo  así  que  $a  tenga  una  propiedad  ‘modelo’   que  es  suya  propia  y  dis4nta  de  la  propiedad  ‘modelo’  de  la  variable  $b.  

EjemploThisCorrecto.php   Curso  PHP  Básico  

(30)

Curso  PHP  Básico  

(31)

EjemploThisIncorrecto.php   Curso  PHP  Básico  

(32)

El  constructor  permite  generar  un  estado  inicial  del  objeto  que  se  adapte  a  los   requerimientos.  Aquí  nos  interesa  guardar  los  dos  parámetros  que  se  le  pasan  al   constructor,  posiblemente  para  u4lizarlos  después.  

Constructor.php   Curso  PHP  Básico  

(33)

Curso  PHP  Básico  

(34)

Curso  PHP  Básico  

(35)

Resultado  del  ejercicio.   Curso  PHP  Básico  

(36)

Curso  PHP  Básico  

(37)

Curso  PHP  Básico  

(38)

Ahora  la  clase  Camion  4ene  las  tres  propiedades:  $modelo,  $marca  y  $ejes.   HerenciaBasico.php  

Curso  PHP  Básico  

(39)

Curso  PHP  Básico  

(40)

Esta  es  una  declaración  completamente  equivalente  a  la  anterior,  sólo  que  no  se   ex4ende,  sino  que  se  crean  directamente  en  la  clase.  

HerenciaBasicoExplicacion.php   Curso  PHP  Básico  

(41)

HerenciaSobrescritura.php   Curso  PHP  Básico  

(42)

Cabe  destacar  que  si  se  sobrescribe  un  método  ya  existente,  el  nuevo  método  debe   tener  la  misma  firma  que  la  del  padre  (debe  recibir  los  mismos  parámetros).  Si  esto   no  ocurre,  se  genera  un  error  de  nivel  E_STRICT.  El  único  método  para  el  cual  esto  no   aplica  es  el  constructor.  El  constructor  puede  redefinir  los  parámetros  que  requiere.   Curso  PHP  Básico  

(43)

Curso  PHP  Básico  

(44)

Resultado  del  ejercicio.   Curso  PHP  Básico  

(45)

Curso  PHP  Básico  

(46)

HerenciaConstructores.php   Curso  PHP  Básico  

(47)

Curso  PHP  Básico  

(48)

HerenciaInvocarAnulados.php   Curso  PHP  Básico  

(49)

Curso  PHP  Básico  

(50)

Curso  PHP  Básico  

(51)

Resultado  del  ejercicio.   Curso  PHP  Básico  

(52)

Curso  PHP  Básico  

(53)

RestringirAcceso.php   Curso  PHP  Básico  

(54)

Curso  PHP  Básico  

(55)

RestringirAccesoUso.php   Curso  PHP  Básico  

(56)

Curso  PHP  Básico  

(57)

RestringirAccesoMetodos.php   Curso  PHP  Básico  

(58)

Curso  PHP  Básico  

(59)

Curso  PHP  Básico  

(60)

Curso  PHP  Básico  

(61)

Curso  PHP  Básico  

(62)

Instanceof.php   Curso  PHP  Básico  

(63)

Curso  PHP  Básico  

(64)

Curso  PHP  Básico  

(65)

ClasesAbstractas.php   Curso  PHP  Básico  

(66)

Curso  PHP  Básico  

(67)

ClasesAbstractasFiltroLetras.php   Curso  PHP  Básico  

(68)

Curso  PHP  Básico  

(69)

Curso  PHP  Básico  

(70)

ClasesAbstractasFiltroNumeros.php   Curso  PHP  Básico  

(71)

Curso  PHP  Básico  

(72)

Interfaces.php   Curso  PHP  Básico  

(73)

Curso  PHP  Básico  

(74)

Curso  PHP  Básico  

(75)

Curso  PHP  Básico  

(76)

Resultado  del  ejercicio.   Curso  PHP  Básico  

(77)

Curso  PHP  Básico  

(78)

Curso  PHP  Básico  

(79)

ExcepcionesIntroduccion.php   Curso  PHP  Básico  

(80)

Hablar  sobre  el  relanzado  de  excepciones  (tercer  parámetro)   Curso  PHP  Básico  

(81)

Las  excepciones  manejan  un  mensaje  y  un  código  de  error  que  son  propiedades  del   objeto  Excep4on  

ExcepcionesCodigo.php   Curso  PHP  Básico  

(82)

Curso  PHP  Básico  

(83)

Resultado  del  ejercicio.   Curso  PHP  Básico  

(84)

Curso  PHP  Básico  

(85)

ExtendiendoExcepciones.php   Curso  PHP  Básico  

(86)

Hablar  sobre  el  relanzado  de  excepciones  (tercer  parámetro)   Curso  PHP  Básico  

(87)

Explicar  que  se  cumple  instanceof  Excep4on   AtrapandoExcepciones.php  

Curso  PHP  Básico  

(88)

En  este  ejemplo  ambos  bloques  catch  atrapan  la  excepción  porque  $e  es  instancia   tanto  de  Excep4on_Bd  como  de  Excep4on.  

ExcepcionesAnidadas.php   Curso  PHP  Básico  

(89)

Curso  PHP  Básico  

(90)

Curso  PHP  Básico  

(91)

MetodosFinales.php   Curso  PHP  Básico  

(92)

ClasesFinales.php   Curso  PHP  Básico  

(93)

Curso  PHP  Básico  

(94)

Curso  PHP  Básico  

(95)

MetodoDestruct.php   Curso  PHP  Básico  

(96)

MetodoCall.php   Curso  PHP  Básico  

(97)

MetodoCallSta4c.php   Curso  PHP  Básico  

(98)

MetodoGet.php   Curso  PHP  Básico  

(99)

Curso  PHP  Básico  

(100)

Resultado  del  ejercicio.   Curso  PHP  Básico  

(101)

Curso  PHP  Básico  

(102)

MetodoSet.php   Curso  PHP  Básico  

(103)

Curso  PHP  Básico  

(104)

Resultado  del  ejercicio.   Curso  PHP  Básico  

(105)

Curso  PHP  Básico  

(106)

MetodoIsset.php   Curso  PHP  Básico  

(107)

MetodoUnset.php   Curso  PHP  Básico  

(108)

Curso  PHP  Básico  

(109)

Serialize.php   Curso  PHP  Básico  

(110)

Curso  PHP  Básico  

(111)

MetodoSleep.php   Curso  PHP  Básico  

(112)

Curso  PHP  Básico  

(113)

MetodoWakeup.php   Curso  PHP  Básico  

(114)

Curso  PHP  Básico  

(115)

MetodoToString.php   Curso  PHP  Básico  

(116)

Curso  PHP  Básico  

(117)

Curso  PHP  Básico  

(118)

Curso  PHP  Básico  

(119)

Curso  PHP  Básico  

(120)

Curso  PHP  Básico  

(121)

MetodoSetState.php   Curso  PHP  Básico  

(122)

Curso  PHP  Básico  

(123)

Curso  PHP  Básico  

(124)

Curso  PHP  Básico  

(125)

Curso  PHP  Básico  

(126)

TiposReferencias.php   Curso  PHP  Básico  

(127)

Curso  PHP  Básico  

(128)

Curso  PHP  Básico  

(129)

ClonarObjetosReferencias.php   Curso  PHP  Básico  

(130)

Curso  PHP  Básico  

(131)

Curso  PHP  Básico  

(132)

MetodoClone.php   Curso  PHP  Básico  

(133)

Curso  PHP  Básico  

(134)

Resultado  del  ejercicio.   Curso  PHP  Básico  

(135)

Curso  PHP  Básico  

(136)

Curso  PHP  Básico  

(137)

Curso  PHP  Básico  

(138)

MetodoClone.php   Curso  PHP  Básico  

(139)

Curso  PHP  Básico  

(140)

Curso  PHP  Básico  

(141)

Resultado  del  ejercicio.   Curso  PHP  Básico  

(142)

Curso  PHP  Básico  

(143)

MetodoClone.php   Curso  PHP  Básico  

(144)

Curso  PHP  Básico  

(145)

Curso  PHP  Básico  

(146)

Curso  PHP  Básico  

(147)

Curso  PHP  Básico  

(148)

Curso  PHP  Básico  

(149)

Curso  PHP  Básico  

(150)

Curso  PHP  Básico  

(151)

MetodoClone.php   Curso  PHP  Básico  

(152)

Curso  PHP  Básico  

(153)

Curso  PHP  Básico  

(154)

Curso  PHP  Básico  

(155)

Curso  PHP  Básico  

(156)

Curso  PHP  Básico  

Referencias

Documento similar

MAGNA3 es la opción superior para una amplia gama de aplicaciones de calefacción y refrigeración, que incluyen:. • Superficies

RESTAURACIÓN DE UNA ENCUADERNACIÓN CON RECUBRIMIENTO DE PIEL GOFRADA O ESTAMPADA EN

Del conjunto, surgen variables biológicas (talla, peso, edad, madurez o fecundidad), utilizadas en evaluación y gestión. Su versatilidad permite adaptarse a peticiones con diferentes

En respuesta, la Contaduría General de la Nación mediante la Resolución 533 del 2015 incorpora como parte integrante del Régimen de Contabilidad Pública el nuevo Marco

O Documento de Personalización recolle unha relación detallada dos criterios de reparto empregados para aqueles casos nos que non se puideron relacionar os custos con

Os custos que na fase anteriormente descrita foron repercutidos aos Centros de Último Nivel, nesta fase repártense ás diferentes actividades desenvolvidas por estes a través

O Documento de Personalización recolle unha relación detallada dos criterios de reparto empregados para aqueles casos nos que non se puideron relacionar os custos con

Supongamos que del cálculo relativo a las horas de docencia correspondiente al ejercicio 2015 (función del POD de los cursos 2014/2015 y 2015/2016) se obtiene un total de 240