Está en la página 1de 58

Computación en el Servidor Web

(Máster Universitario en Ingeniería del Software y Sistemas Informáticos)

Javier Cubo

TEMA 2
PHP avanzado (Partes 1 y 2)
En esta clase…

► ¿Cómo estudiar este tema?


► Estructuras de control con PHP
► Funciones en PHP
► Manejo de arrays en PHP
► Manejo de cadenas con PHP
► Orientación a objetos en PHP
► Actividad: Mi segunda página web

Computación en el Servidor Web - Javier Cubo 2


Esquema

Computación en el Servidor Web - Javier Cubo 3


¿Cómo estudiar este tema?
§ Material de estudio
• En el tema

• Ampliar en http://php.net/manual/es/langref.php

§ Temporalización:
• La semana pasada: hasta arrays

• Esta semana:

• Cadenas

• Orientación a objetos

Computación en el Servidor Web - Javier Cubo 4


Estructuras de control
Selectivas
§ Deciden qué parte del código se ejecuta en función del
cumplimiento de una condición
• if (if-else, if-elseif, if-elseif-else)

• switch

Computación en el Servidor Web - Javier Cubo 5


Estructuras de control
Selectivas
§ if

Computación en el Servidor Web - Javier Cubo 6


Estructuras de control
Selectivas
§ switch: equivalente a secuencia if – elseif – (else)

Computación en el Servidor Web - Javier Cubo 7


Estructuras de control
Selectivas
§ switch: equivalente a secuencia if – elseif – (else)

Computación en el Servidor Web - Javier Cubo 8


Estructuras de control
Iterativas
§ Ejecutan el código contenido en la estructura un número
determinado de veces, por un contador u otra condición
• while

• do_while

• for

• foreach (para arrays, lo veremos al ver Arrays)

Computación en el Servidor Web - Javier Cubo 9


Estructuras de control
Iterativas
§ while

(2 formas)

Computación en el Servidor Web - Javier Cubo 10


Estructuras de control
Iterativas
§ while
• Estilo

• Marcas HTML

Computación en el Servidor Web - Javier Cubo 11


Estructuras de control
Iterativas
§ while
• Estilo

• Marcas HTML

Computación en el Servidor Web - Javier Cubo 12


Estructuras de control
Iterativas
§ do_while (instrucciones se ejecutan siempre, al menos 1 vez)

Computación en el Servidor Web - Javier Cubo 13


Estructuras de control
Iterativas
§ for

Computación en el Servidor Web - Javier Cubo 14


Estructuras de control
Iterativas
§ for

Computación en el Servidor Web - Javier Cubo 15


Estructuras de control
Iterativas
§ for

Computación en el Servidor Web - Javier Cubo 16


Estructuras de control
break y continue
§ break
• Rompe ciclo iterativo (y el switch) antes de cumplir condición

• Argumento indicando cuántos ciclos debe romper (break 2;)

http://php.net/manual/es/control-structures.break.php

Computación en el Servidor Web - Javier Cubo 17


Estructuras de control
break y continue
§ continue
• Omite ejecución sentencias y pasa a la siguiente iteración

Computación en el Servidor Web - Javier Cubo 18


Funciones
§ Conjunto de instrucciones que se agrupan bajo un nombre
• Se definen usando la palabra clave function

• No son sensibles al contexto

• No hay que definirlas antes de referenciarlas

• Ámbito global

• Admite recursividad

• Puede tener argumentos

ü Por valor ($)

ü Por referencia (&$)


ü Predeterminados (=)

Computación en el Servidor Web - Javier Cubo 19


Funciones
§ Conjunto de instrucciones que se agrupan bajo un nombre

Computación en el Servidor Web - Javier Cubo 20


Funciones
§ Conjunto de instrucciones que se agrupan bajo un nombre

Computación en el Servidor Web - Javier Cubo 21


Manejo de arrays en PHP
§ Conjunto de datos del mismo tipo que
• Se almacenan de forma contigua en memoria

• Se acceden mediante un nombre común

• En PHP los arrays son muy flexibles

Computación en el Servidor Web - Javier Cubo 22


Manejo de arrays en PHP
§ Dos tipos
• Escalares: se acceden por un índice

ü Se inserta en la posición posterior a la última ocupada

• Asociativos: el índice es una cadena

ü El índice se indica entre comillas

ü Simula una tabla Hash

Computación en el Servidor Web - Javier Cubo 23


Manejo de arrays en PHP
§ Otra forma de declarar arrays
• array(…)

Computación en el Servidor Web - Javier Cubo 24


Manejo de arrays en PHP
§ Comentarios adicionales
• Los pares índice – valor se separan con “=>”

• Los índices pueden no ser consecutivos

• No hay que indicar el número de elementos del array a priori

• En el ejemplo, el siguiente valor se insertará en la posición 6

• Se permiten índices mixtos

Computación en el Servidor Web - Javier Cubo 25


Manejo de arrays en PHP
§ Arrays multidimensionales
• Se declaran añadiendo pares de corchetes o con array()

Computación en el Servidor Web - Javier Cubo 26


Manejo de arrays en PHP
Estructura de control iterativas específica
§ foreach
• Específico para arrays

• Permite acceder a elementos o índice y elemento

Computación en el Servidor Web - Javier Cubo 27


Manejo de arrays en PHP
Hagamos pruebas…
§ Probamos inserciones:
• Un elemento más en un array escalar

• Un elemento más en un array asociativo

• Un elemento más en un array mixto

• (Vemos el código)

Computación en el Servidor Web - Javier Cubo 28


Manejo de arrays en PHP
Hagamos pruebas…

Computación en el Servidor Web - Javier Cubo 29


Manejo de arrays en PHP
Funciones adicionales sobre arrays
• array_count_values($unArray)

• array_fill($indInicial, $numPosiciones, $valor)

• array_flip($unArray)

• array_key_exists($indice, $unArray)

• array_keys($unArray, $valor=null, $strict=false)

• array_pop($unArray)

• array_reverse($unArray, $mantenerClaves=false)

• array_unique(array $unArray)

Computación en el Servidor Web - Javier Cubo 30


Manejo de cadenas en PHP
Conceptos previos
§ Cadena de caracteres: variable que almacena textos

§ Se indican entre comillas:


• Simples: copia literal, salvo \’ y \\

• Dobles: variables y caracteres escape: \n \r \t \v \e \f \$ \’ \”

§ Usando bloques heredoc

§ Operaciones:
• Concatenación: “.”

• Acceso: “{}” con índice de posición

Computación en el Servidor Web - Javier Cubo 31


Manejo de cadenas en PHP
Conceptos previos
§ Ejemplo: fichero Tema2-12

Computación en el Servidor Web - Javier Cubo 32


Manejo de cadenas en PHP
Funciones de cadenas
§ OJO: La cadena se pasa como argumento

§ chr($ascii): cadena con carácter especificado en ASCII

§ ord($cad): ASCII del primer carácter de la cadena


§ ltrim($cad): quitar los espacios blancos del principio
§ rtrim($cad): quitar los espacios blancos del final

§ str_repeat($cad, $num): repite una cadena el nº de veces


indicado

Computación en el Servidor Web - Javier Cubo 33


Manejo de cadenas en PHP
Funciones de cadenas
§ OJO: La cadena se pasa como argumento

§ str_replace($buscar, $reemp, $cad): reemplaza subcadenas

§ strcmp($cad1, $cad2): compara cadenas


• Si $cad1 < $cad2 à -1

• Si $cad1 = $cad2 à 0

• Si $cad1 > $cad2 à 1

§ strip_tags($cad, $noquitar): elimina etiquetas HTML y PHP


§ stripslashes($cad): elimina las barras de escape

Computación en el Servidor Web - Javier Cubo 34


Manejo de cadenas en PHP
Funciones de cadenas
§ OJO: La cadena se pasa como argumento

§ strlen($cad): longitud de la cadena

§ strtolower($cad): pasa a minúscula


§ strtoupper($cad): pasa a mayúscula

§ ucfirst($cad): Pasa a mayúscula la primera letra


§ ucwords($cad): Pasa a mayúscula la primera letra de cada
palabra
§ substr($cad, $ini, $long): devuelve una cadena indicada entre
índices
Computación en el Servidor Web - Javier Cubo 35
Manejo de cadenas en PHP
Funciones de cadenas
§ OJO: La cadena se pasa como argumento

• Ejemplos en el fichero Tema2-13.php

Computación en el Servidor Web - Javier Cubo 36


Orientación a objetos en PHP
Conceptos previos
§ Programación Orientada a Objetos:
• Clases

ü Atributos (características)

ü Métodos (comportamiento). Se llaman con ->

• Objetos

§ Ventajas:
• Mantenibilidad

• Sostenibilidad

• Reusabilidad

Computación en el Servidor Web - Javier Cubo 37


Orientación a objetos en PHP
Clases en PHP
§ Se definen con “class” + nombre de la clase

Computación en el Servidor Web - Javier Cubo 38


Orientación a objetos en PHP
Clases en PHP
§ Visibilidad:
• public: acceso “a todo el mundo”

• protected: desde la propia clase y sus sub-clases

• private: desde la propia clase

§ Pseudo-variable $this
• Hacer referencia al propio objeto

• Se usa siempre como $this->

Computación en el Servidor Web - Javier Cubo 39


Orientación a objetos en PHP
Clases en PHP
§ Constantes:
• Sin $

• Se declaran con “const”

§ Creación de objetos
• Con new clase();

• Objetos como referencias

Computación en el Servidor Web - Javier Cubo 40


Orientación a objetos en PHP
Herencia en PHP
§ Crear una clase a partir de otra que ya existe
• Se implementa con extends

• La clase hija puede redefinir métodos de la clase de la que


hereda

§ Operador de resolución de ámbito “::”


• Acceso a la clase superior “parent::”

Computación en el Servidor Web - Javier Cubo 41


Orientación a objetos en PHP
Herencia en PHP

Computación en el Servidor Web - Javier Cubo 42


Orientación a objetos en PHP
Sobrecarga y re-escritura
§ En la POO, en general:
• Sobrecarga

ü En la misma clase, métodos con el mismo nombre

ü Distinto número o tipo de argumentos

• Re-escritura / Sobre-escritura

ü Especializar el comportamiento en una clase hija

Computación en el Servidor Web - Javier Cubo 43


Orientación a objetos en PHP
Sobrecarga en PHP
§ PHP no permite sobrecarga como la POO general
• Tipo en tiempo de ejecución

• Flexibilidad en número de parámetros

§ Sí se pueden sobrecargar constructores y destructores


§ Se simula con _call($nombreMetodo, $parametros)
• Se llama cuando el método invocado no existe en la clase

• Dentro de nuestro _call podemos poner un if o switch

• Ejemplo: http://www.techflirt.com/tutorials/oop-in-
php/overloading-and-overriding.html

Computación en el Servidor Web - Javier Cubo 44


Orientación a objetos en PHP
Re-escritura en PHP
§ Consiste en re-escribir un método de la clase padre
• Permite modificar o especializar el comportamiento

§ Sobrecarga de constructores

Computación en el Servidor Web - Javier Cubo 45


Orientación a objetos en PHP
Re-escritura en PHP
§ Sobrecarga de destructores

Computación en el Servidor Web - Javier Cubo 46


Orientación a objetos en PHP
Re-escritura en PHP

§ Ejemplo (continuación de la lección magistral)


• clsMiString.php

• clsMiOtroString.php

• usoMiString.php

Computación en el Servidor Web - Javier Cubo 47


Orientación a objetos en PHP
Re-escritura en PHP
• clsMiString.php

Computación en el Servidor Web - Javier Cubo 48


Orientación a objetos en PHP
Re-escritura en PHP
• clsMiOtroString.php

Computación en el Servidor Web - Javier Cubo 49


Orientación a objetos en PHP
Re-escritura en PHP
• usoMiString.php

Computación en el Servidor Web - Javier Cubo 50


Orientación a objetos en PHP
Propiedades y métodos estáticos
§ Se usan sin instanciar la clase

§ Se declaran con static


§ Sólo se pueden usar con un string literal o constante
• No se puede inicializar con una variable

• No se puede inicializar con un valor devuelto de función

§ No pueden accederse desde un objeto usando ->

Computación en el Servidor Web - Javier Cubo 51


Orientación a objetos en PHP
Clases abstractas
§ Se define con abstract

§ No se pueden instanciar hasta implementar métodos subclases


§ Puede estar parcialmente implementada

§ Debe contener, como mínimo, un método abstracto


§ Las clases hijas deben definir todos los métodos
• Misma visibilidad o menos restrictiva

• Se pueden incluir argumentos opcionales

Computación en el Servidor Web - Javier Cubo 52


Orientación a objetos en PHP
Clases abstractas

Computación en el Servidor Web - Javier Cubo 53


Orientación a objetos en PHP
Clases abstractas
§ Ejemplo

Computación en el Servidor Web - Javier Cubo 54


Orientación a objetos en PHP
Clonación de objetos
§ Los objetos se asignan con referencias

§ A veces necesitamos copias distintas


§ Se hace con “clone”
• Llama a __clone()

ü Copia las propiedades

ü Problema si tenemos referencias (¡!)

• Comportamientos especiales:

ü Definir nuestro __clone()

Computación en el Servidor Web - Javier Cubo 55


Orientación a objetos en PHP
Clonación de objetos
§ Ejemplo

Computación en el Servidor Web - Javier Cubo 56


Actividad
§ Desarrollo web avanzado
• Una estructura de control selectiva

• Una estructura de control iterativa

• Una función

• Un array

• Se valorará positivamente el uso de funciones específicas de


cadenas

• Entrega

ü Un fichero PHP
ü Una captura de pantalla del resultado

Computación en el Servidor Web - Javier Cubo 57


www.unir.net

También podría gustarte