Está en la página 1de 31

Unidad 2

Introduccion
al lenguaje PHP

Desarrollo web
en entorno servidor
Índice Desarrollo web en entorno servidor | UNIDAD 2
Introduccion al lenguaje PHP

2.1. PHP y HTML. Código incrustado

2.2. Sintaxis de PHP

2.3. Comentarios

2.4. Variables y tipos de dato


2.4.1. Declaración de variables
2.4.2. Asignación por copia y por referencia
2.4.3. Variables no inicializadas
2.4.4. Constantes
2.4.5. Tipos de datos escalares
2.4.6. Ámbito de las variables
2.4.7. Variables predefinidas

2.5. Estructuras de control


2.5.1. Estructuras condicionales
2.5.2. Estructuras de repetición
2.5.3. Otras estructuras de control

2.6. Operadores

2.7. Arrays

2.8. Funciones y librerías


2.8.1. Funciones predefinidas
2.8.2. Funciones definidas por el usuario
2.8.3. Paso de argumentos por copia y por valor
2.8.4. Funciones como argumentos

2.9. Excepciones y errores


2.9.1. Errores
2.9.2. Excepciones
2.9.3. Excepciones Error

2.10. Clases y objetos


Desarrollo web en entorno servidor | UNIDAD 2
Introduccion al lenguaje PHP

Introducción
En esta unidad se va a realizar una introducción al lenguaje de
programación de PHP, primero se empezará detallando cómo
insertar bloques de código de PHP en ficheros de HTML, para
que así el servidor web procese esta información y la transforme
en la salida deseada. Posteriormente se definirá la sintaxis bási-
ca de este lenguaje, los distintos tipos de variable que existen,
las estructuras de control, cómo realizar comentarios y demás
aspectos de este lenguaje. Para finalizar se detallarán aspectos
más avanzados, como la utilización de funciones, excepciones
y la creación de clases y métodos.

Al finalizar esta unidad


+ Conoceremos cuál es la sintaxis bási- + Analizaremos los tipos de estructuras
ca del lenguaje de programación PHP de control básicos

+ Entenderemos de qué modo se inte- + Comprenderemos cómo utilizar los


gran PHP y HTML arrays asociativos

+ Describiremos qué tipos de datos + Aprenderemos a crear clases y méto-


existen en PHP dos en PHP

3
Desarrollo web en entorno servidor | UNIDAD 2
Introduccion al lenguaje PHP

2.1. PHP y HTML.


Código incrustado
PHP se trata de un lenguaje de programación para el desarrollo
web en el lado del servidor. Fue creado en 1994 por el progra-
mador danés-canadiense Rasmus Lerdorf, y desde entonces ha
contado con una gran aceptación y se ha convertido en uno de los
lenguajes más utilizados para el desarrollo en el lado del servidor.

El lenguaje PHP es un lenguaje flexible y que posibilita rea-


lizar pequeños scripts con rapidez. Si se compara, por ejem-
plo, con Java, se requiere escribir menos código en PHP y, por
lo general, resulta menos engorroso. La sintaxis que se utiliza
para los elementos básicos es muy similar a la que se utiliza en
otros lenguajes muy extendidos como Java y C, por lo que es
un lenguaje rápido de aprender para aquellas personas que ya
cuentan con cierta experiencia en la programación.

En esta unidad se va a presentar la sintaxis y los elementos bá-


sicos del lenguaje PHP, y se espera que el lector tenga ciertos
conocimientos con los conceptos básicos de programación
estructurada y orientada a objetos.

Cuando se desarrolla en web es muy común utilizar el PHP incrustado


dentro de ficheros HTML, y para ello se utiliza la etiqueta <?php para
abrir el bloque de programación en PHP y la etiqueta ?> para cerrarlo.

En el siguiente ejemplo se muestra una página HTML completa


que incluye un bloque PHP incrustado en las líneas 7-10. Como se
puede observar, el bloque cuenta con una única línea para que en
la página del servidor se muestre la cadena “Hola mundo”.
Imagen 1. Ejemplo de
bloque PHP en fichero HTML

De modo que, cuando se solicite la página al servidor web, el


resultado que se mostrará será:

Hola mundo

Al consultar el código fuente de la página web (pulsando Ctrl


+ u), se obtiene:

Imagen 2. Código fuente del ejemplo “Hola mundo”

El servidor web ha modificado el bloque de PHP y muestra


ahora la salida, que es “Hola mundo”. Se utiliza echo para que
se muestre el valor de una variable o de una cadena de texto.

4
Desarrollo web en entorno servidor | UNIDAD 2
Introduccion al lenguaje PHP

2.2. Sintaxis de PHP


El elemento básico en PHP es el bloque, y éste se delimita con
las etiquetas nombradas anteriormente, y en su interior se co-
locan sentencias que están separadas por punto y coma.

Imagen 3. Bloque de PHP

RECUERDA

Cuando un fichero solo contiene PHP es recomendable que no


se cierre la etiqueta del último bloque, ya que si la respuesta del
servidor involucra a varios ficheros puede llegar a dar problemas.

2.3. Comentarios
En PHP pueden utilizarse comentarios, que son anotaciones
en el código fuente del programa que el sistema ignorará a la
hora de iniciarlo.

Existen dos tipos de comentarios, uno es de bloque, que van


encerrados entre “/*” y “*/”, y otro es de línea, que empieza por
“//” o por “#”.

Imagen 4. Tipos de comentarios

Tener comentarios en el código que sean claros y concisos fa-


cilitan la lectura y comprensión del programa.

5
Desarrollo web en entorno servidor | UNIDAD 2
Introduccion al lenguaje PHP

2.4. Variables y tipos de dato


PHP es un lenguaje con tipado débil, es decir, que al declarar
una variable no es necesario que se declare de qué tipo de
dato se va a tratar. De hecho, las variables no se declaran, si no
que se crean la primera vez y se les asigna un valor, por lo que
el tipo de dato que pueden almacenar estas variables depen-
derá del valor con el que se inicialicen.

Esto influye en la velocidad de escritura de los programas y en


su complejidad, pero también presenta algunos inconvenientes,
como que puede dar lugar a código de baja calidad si no se
presta la suficiente atención y, a medida que las aplicaciones
crecen en complejidad, pueden llegar a ser difíciles de depurar.

2.4.1. Declaración de variables

Los identificadores de las variables, en PHP, siempre van pre-


cedidos por el carácter ‘$’, y deben de empezar por una letra,
o bien por un guion bajo (‘_’), y puede contener números, letras
y guiones bajos.

Para declarar una variable solo se necesita que se le asigne


un valor:

$variable = valor;

Por ejemplo, en la siguiente instrucción se declara la variable


$numero_entero, y será de tipo integer porque se le ha asigna-
do un primer valor de número entero.

$numero_entero = 3;

El valor de la variable se puede modificar simplemente con


asignarle otro tipo de valor, al igual que el tipo de variable,
como se puede ver en el siguiente ejemplo.

Imagen 5. Cambio de tipo de dato en PHP

La salida del ejemplo nos verifica que la variable cambia de


tipo de dato:

integer
string

6
Desarrollo web en entorno servidor | UNIDAD 2
Introduccion al lenguaje PHP

2.4.2. Asignación por copia y por referencia

En principio, la asignación de variables se realiza mediante copia:

$variable1 = $variable2;

En este caso se creará una nueva variable (2) con el valor que
tenga la anterior (1). Las dos variables representar posiciones
distintas en la memoria, aunque representen el mismo valor en
el momento de la asignación.

Se puede también definir una referencia a una variable utilizan-


do el operador ampersand:

$variable2 = &$variable1;

En este caso, $variable2 no se trata de una nueva variable con


el valor de $variable1, sino que $variable2 apunta a la misma
dirección de memoria que $variable1, es decir, en realidad es-
tas dos variables son dos nombres para el mismo dato, como
se puede observar en el siguiente ejemplo:

Imagen 6. Asignación por copia y referencia

En este caso, los valores que se mostrarán en la salida serán:

5
10
10

2.4.3. Variables no inicializadas

Puede darse la situación de que se intente utilizar una variable


antes de que se le haya asignado un valor, entonces se gene-
rará un error de tipo E_NOTICE, pero que no detendrá la eje-
cución del script. Si esta variable no inicializada se encuentra
dentro de una expresión, esta expresión se calculará tomando
un valor por defecto para ese tipo de dato.

Imagen 7. Operaciones con variables no inicializadas

En la línea 3 se intenta realizar una operación con una variable


no inicializada, el valor que se toma por defecto es 0, por lo
que el resultado de la operación será 2. Lo mismo sucede en la
línea 5, donde esta vez, al ser una multiplicación y tomar como
valor por defecto 0, el valor resultante es 0.

7
Desarrollo web en entorno servidor | UNIDAD 2
Introduccion al lenguaje PHP

El script no se detiene, pero muestra una serie de errores en


la consola haciendo referencia a la utilización de variables
no inicializadas:

PHP Warning: Undefined variable $variable2 in /work-


space/Main.php on line 3
2
PHP Warning: Undefined variable $variable2 in /work-
space/Main.php on line 5
0

2.4.4. Constantes

Las constantes son valores que no pueden ser modificados o


alterados durante la ejecución del script, y para declararlas se
utiliza la función define(), donde se introduce el nombre de la
constante y el valor que se le quiere dar.

define(“CONSTANTE”, 50);

Es común utilizar las mayúsculas para identificar las constantes.

2.4.5. Tipos de datos escalares

En PHP existen cuatro tipos de datos escalares: integer, float,


boolean y string.

Números

Se utiliza el tipo de dato integer para representar los números


enteros, se pueden utilizar las constantes PHP_INT_SIZE, PHP_
INT_MAX y PHP_INT_MIN para conocer el tamaño y los valores
máximos y mínimos respectivamente de los números enteros.
Estos valores dependen de la plataforma en la que se ejecuten.

Se utiliza el punto para concatenar elementos, en este caso con- Imagen 8. Constantes para conocer el tamaño
y los valores de los números enteros
catenar la impresión del valor en pantalla con un salto de línea.

La salida es, por tanto:

8
-9223372036854775808
9223372036854775807

Al utilizar un sistema de 64 bits, el tamaño en bytes máximo


que se puede utilizar para un número entero es 8. Y el número
máximo y mínimo son los valores de la salida.

Para representar los números reales se utiliza el tipo float, y su


tamaño también depende de la plataforma, pero suele ofrecer
una precisión de 14 decimales. La precisión de los float presen-
ta los mismos problemas que en otros lenguajes, y los redon-
deos pueden ser extraños.

La conversión entre integer y float se realiza de forma automá-


tica, es decir, si el sistema recibe un float cuando se esperaba
un integer, este lo truncará.
Imagen 9. Conversión de float a integer

8
Desarrollo web en entorno servidor | UNIDAD 2
Introduccion al lenguaje PHP

La salida en este caso sería:

Si en el programa se realiza una operación sobre un número


entero que supera el valor límite que puede adoptar un integer,
o tiene decimales, éste se convertirá en un float. Se pueden
utilizar también los operadores de conversión (int) o (float).

Existen distintas opciones para generar números reales:

Imagen 10. Números reales

La salida es:

5
72
11183
1.25
4000

Cadenas

Las string son un tipo de dato que permite almacenar cadenas


de caracteres, para crear una string se pueden utilizar comillas
dobles o simples. Existe una diferencia fundamental al utilizar
las comillas simples o dobles, si se utiliza el entrecomillado
doble, las variables que aparezcan dentro de la cadena se sus-
tituirán por su valor, por lo que esto es más práctico que con-
catenar varias instrucciones.

Imagen 11. Entrecomillado simple y doble y concatenación

La salida será:

Hola Pedro
Hola $nombre
Hola Pedro

9
Desarrollo web en entorno servidor | UNIDAD 2
Introduccion al lenguaje PHP

Booleanos

Este tipo de dato se utiliza para las variables booleanas, es de-


cir, las que solo pueden tomar los valores de TRUE y FALSE.
Estos resultados se obtienen en situaciones tales como ope-
radores de comparación, y se utiliza en condicionales y bucles.

Cuando el script espera un valor booleano y recibe otro tipo de


dato, las reglas que se aplican son:

Conversión implícita a booleano

Tipo Valor como booleano

integer Si es 0 se toma FALSE, de otro modo será TRUE

float Si es 0.0 se toma FALSE, de otro modo será TRUE

Si la cadena está vacía se toma FALSE, de otro


string modo será TRUE

FALSE
Variables no
inicializadas

null FALSE

Si no tiene ningún elemento se toma FALSE, de


array otro modo será TRUE

Tipos de datos en PHP

Tipo Descripción
Otros tipos de datos
integer Números enteros
Además de los tipos de dato escalares, en PHP también exis-
ten los siguientes tipos de datos: Números reales en
float
coma flotante
1. array. Representa una colección de elementos, es una
herramienta muy potente que se explicará más adelante string Cadenas de caracteres
en esta unidad.

2. object. PHP es un lenguaje de programación orientada boolean Booleanos, TRUE o FALSE


a objetos, esto se detallará más adelante en esta unidad.
array Colección de elementos
3. callable. Es un tipo de dato especial utilizado para re-
presentar funciones de callback, que son funciones que
Un objeto es una instan-
pasan a otras funciones. object
cia de una clase
4. null. Se utiliza para representar una variable que no ha
sido inicializada. Una variable es de tipo null cuando se callable
Para las funciones de
le asigna el valor null o cuando no ha sido inicializada. callback

5. resource. Se utiliza para representar recursos externos, Para representar varia-


como, por ejemplo, una conexión a una base de datos. null
bles no asignadas

Los tipos de datos que tenemos, por tanto, en PHP, son:


resource Para recursos externos

10
Desarrollo web en entorno servidor | UNIDAD 2
Introduccion al lenguaje PHP

2.4.6. Ámbito de las variables

El ámbito de una variable se define como aquella parte del có-


digo en la que es visible, es decir, si se declara una variable en
un fichero cualquiera de PHP, esa variable sólo estará disponi-
ble en ese fichero y en los ficheros que se incluyan desde este.
Por otra parte, las funciones definen un ámbito local, por lo que
las variables que hayan sido definidas dentro de la función no
son accesibles desde otras funciones, y, siguiendo la misma
lógica, las variables que no sean locales, o sus argumentos, no
podrán ser utilizadas dentro de la función.

Para poder utilizar una variable que sea accesible desde cual-
quier función o fichero de la aplicación se utiliza la palabra re-
servada global, y la variable predefinida $_GLOBALS.

2.4.7. Variables predefinidas

En PHP existen una gran cantidad de variables predefinidas


disponibles, contienen información sobre el servidor, datos
que ha enviado el cliente o variables de entorno. Dentro de
las variables predefinidas existe un grupo de ellas, denomina-
das superglobales, que están disponibles en cualquier ámbito.
Cada una guarda un tipo de información.

Imagen 12. Ejemplo de uso de la variable $_SERVER

Variables superglobales

Nombre Descripción

$_GLOBALS Variables globales

$_SERVER Información del servidor

$_GET Parámetros enviados con el método GET (en la URL)

$_POST Parámetros enviados con el método POST (formularios)

$_FILES Ficheros subidos al servidor

$_COOKIE Cookies enviadas por el cliente

$_SESSION Información de sesión

$_REQUEST Contiene la información de $_GET, $_POST y $_COOKIE

$_ENV Variables de entorno

11
Desarrollo web en entorno servidor | UNIDAD 2
Introduccion al lenguaje PHP

2.5. Estructuras de control


PHP dispone de las estructuras de control habituales que permiten
modificar el flujo de ejecución de las instrucciones de un programa.

2.5.1. Estructuras condicionales

En PHP, las estructuras condicionales son if, if-else, if-elseif y switch.

La sintaxis para el if es:

if (condición)
instrucción

En el caso de que se cumpla la condición establecida, la ins-


trucción que se sitúa dentro del if se ejecutará, y si no se cum-
ple, no se ejecutará. Si se quiere introducir más de una senten-
cia dentro del if, se encerrarán entre llaves.

if (condición){
instrucción 1
instrucción n
}

Para evaluar la condición se utilizará verdadero o falso, y, en


caso de ser necesario, se seguirán las normas de conversión
a boolean.

Imagen 13. Ejemplo de condicional

La salida que se mostrará con este ejemplo es:

Es menor que tres

La estructura else se utiliza para ejecutar instrucciones cuando


la condición del if no se cumple.

Imagen 14. Condicional con else

La salida que se mostrará en este ejemplo es:

Es menor o igual que tres

12
Desarrollo web en entorno servidor | UNIDAD 2
Introduccion al lenguaje PHP

Si se necesitan utilizar varias sentencias condicionales puede


utilizarse el elseif, que es equivalente a else if.

Imagen 15. Condicionales anidados

Cuando existen varios condicionales anidados, la primera condición


que se cumple es la que se ejecuta, y en caso de que no se cumpla
ninguna condición, se ejecutará el else final (en caso de que lo haya).

Si se desean agrupar varios if, puede ser útil aplicar la estruc-


tura del switch, esta estructura está presente también en otros
lenguajes. El siguiente ejemplo realiza la misma función que el
anterior, pero con una estructura más legible.

Imagen 16. Estructura del switch

Dependiendo del valor que tenga $variable, se ejecutará un


case u otro, y la sección default se ejecutará en el caso de que
el valor de $variable no coincida con ninguno de los case.

El break al final de cada case sirve para que, cuando el valor


de la variable coincida con el case, deje de evaluar los demás
casos, si no se colocara el break, aún cuando haya encontrado
una coincidencia, seguiría evaluando los demás casos, y podría
producirse que se ejecutaran dos o más casos.

2.5.2. Estructuras de repetición

Las estructuras de repetición, o bucles, sirven para repetir una


secuencia de instrucciones de código repetidas veces mientras
se cumpla una condición. Se tienen las estructuras de for, while y
do-while, y se utiliza la misma sintaxis que en Java o en C.

La sintaxis del bucle for es:

for(instrucción de inicialización; condición; ins-


trucciones de iteración) {
instrucciones del bucle;
}

13
Desarrollo web en entorno servidor | UNIDAD 2
Introduccion al lenguaje PHP

La instrucción de inicialización solo se ejecuta cuando se entra


por primera vez al bucle, y las instrucciones del bucle se eje-
cutarán hasta que se deje de cumplir la condición del bucle.

Una vez se ha ejecutado la instrucción de inicialización se com-


prueba la condición, en caso de que se cumpla, se entrará en el
bucle y se seguirán las instrucciones de iteración. Luego se vuelve
a comprobar si se cumple la condición, y en caso de que se cum-
pla se volverá a realizar la instrucción del bucle. Y este proceso
se repetirá hasta que la condición deje de cumplirse, y a partir de
ahí se seguirá ejecutando el código que está después del bucle.

Imagen 17. Bucle for

En el ejemplo anterior se tiene un bucle for que se repite 4


veces. Se tiene una variable $i que se inicializa en cero, y su
valor aumenta en una unidad en cada iteración mientras que
sea menor que 4, en el momento en el que se $i vale 4, la con-
dición del bucle for ya no se cumple y se sale del bucle.

La salida de este script es:

0
1
2
3

La sintaxis del bucle while es:

while(condición) {
instrucciones;
}

Se sigue la misma lógica que con el bucle for, mientras se


cumpla una condición se ejecutará el bucle. El while no utiliza
instrucciones de inicialización, pero se pueden colocar antes
del bucle, y tampoco instrucciones de bucle, pero se pueden
colocar dentro de este.

Imagen 18. Ejemplo de bucle while

En el bucle do-while se utiliza una sintaxis similar, con la pecu-


liaridad de que la condición se comprueba después de ejecu-
tar las instrucciones del bucle.

do{
instrucciones;
}while (condición);
Imagen 19. Ejemplo de bucle do-while

14
Desarrollo web en entorno servidor | UNIDAD 2
Introduccion al lenguaje PHP

Que en la estructura del do-while la condición se compruebe


después de ejecutar el bucle provoca que las instrucciones del
bucle se ejecutarán, al menos, una vez.

Dentro de un bucle se pueden utilizar las sentencias de break


y continue.

El break sirve para abandonar inmediatamente el bucle o switch


en el que aparezca, independientemente de que se cumpla la
condición o no.

Imagen 20. Ejemplo de break

En el anterior ejemplo, aunque tenemos un bucle con la con-


dición de que $i tiene que ser menor que cuatro, dentro del
bucle tenemos una instrucción de que si $i llega a 2 se ejecute
el break, por lo que se ha de abandonar el bucle, por lo que la
salida de este script es:

0
1

En PHP en la sentencia de break se le puede introducir un nú-


mero, que indica el número de niveles de anidación que debe
de abandonar. De este modo se puede salir de un bucle anida-
do utilizando una única secuencia break.

Imagen 21. Distintos tipos de break

15
Desarrollo web en entorno servidor | UNIDAD 2
Introduccion al lenguaje PHP

Como se puede ver en el anterior ejemplo, se tiene un primer


for que funciona a modo de contador, con la variable $i, y den-
tro de este for se tiene otro con la variable $j, el condicional
que se sitúa en el interior se ejecuta cuando $j llega a uno, y
el break hace que se abandone únicamente el for del interior.

En el segundo for anidado se tiene la misma estructura, con el úni-


co cambio de que al break le sigue el número dos, indicando que,
cuando se cumpla la condición de $j == 1, se ejecutará el break y
se abandonarán los dos bucles for. La salida quedaría, por tanto:

Primer bloque for:


i: 0, j: 0
i: 0, j: 1
i: 1, j: 0
i: 1, j: 1
i: 2, j: 0
i: 2, j: 1
Segundo bloque for:
i: 0, j: 0
i: 0, j: 1

Esto se aplica también a la sentencia condicional switch, por


ejemplo, si se tiene un switch dentro de un bucle while y se
ejecuta un break 2 se sale de ambos.

La sentencia continue tiene como finalidad la de forzar una nueva


repetición del bucle, de modo que las instrucciones que estén des-
pués de la sentencia continue no se ejecutarán, y, si se sigue cum-
pliendo la condición del bucle, se ejecutará una nueva iteración.

Imagen 22. Ejemplo de continue

En este caso, la salida es:

0
1
3

Observamos que, cuando se cumple la condición de $i == 2, se eje-


cuta la sentencia de continue y el bucle salta a la siguiente iteración.

16
Desarrollo web en entorno servidor | UNIDAD 2
Introduccion al lenguaje PHP

2.5.3. Otras estructuras de control

Se pueden incluir otros ficheros utilizando las sentencias in- Añadir ficheros en PHP tiene ciertas diferencias con otros len-
clude y require. guajes, si se tiene un fichero 1 que incluye al fichero 2, las rutas
relativas que aparezcan en 2 se interpretarán a partir del di-
include “otrofichero.php”; rectorio de 1. Para poder solucionarlo, en el fichero 2 se utiliza
require “otrofichero.php”; dir_name(__FILE__), que devuelve la ruta del fichero:

La única diferencia que se tiene entre ambas es la forma en include( dirname(__FILE__).”\”.’fichero.php’);


la que manejan los errores, con include se genera un error de
tipo E_NOTICE, pero con require se genera un error E_FATAL, Finalizando con las estructuras de control, la sentencia return
que detiene la ejecución del script. Si no hay ningún error, el se encarga de finalizar la ejecución del fichero cuando se en-
fichero especificado se ejecutará. Si el fichero es una librería cuentra fuera de una función. En el siguiente ejemplo el echo
con funciones, estas se declaran y quedan habilitadas para el final no se llega a ejecutar porque está después del return.
fichero que lo incluye. Si el fichero tiene sentencias fuera de
una función, estas se ejecutarán.

Por ejemplo, si se solicita este fichero en el script principal:

Imagen 25. Ejemplo de return

Si el script que contiene el return estuviera ejecutándose a tra-


Imagen 23. Fichero solicitado vés de un require o include, el script finalizaría y se continuaría la
ejecución del fichero que lo incluía. Si se pasa como argumento
Y este es el script que lo solicita: un número entero, este se devuelve como valor de retorno.

Si el return está dentro de una función, se finaliza su ejecución


y la función devuelve el argumento del return. Luego la eje-
cución continúa en el fichero o función que llama a la función.

Imagen 24. Script principal

La salida que se obtiene es:

Esto es el fichero solicitado


Variable en el script principal
Notice: Undefined variable: var2 on line 4
Esto es el script principal

Se observa que las instrucciones del fichero que se solicita


se ejecutan y que, si se requiere de una variable antes de ser
inicializada, como es el caso de $var2, se muestra un mensaje
de error, es decir, que el ámbito de las variables del fichero
principal incluye a los ficheros solicitados.

También están disponibles las sentencias require_once e inclu-


de_once, que son iguales a las anteriores, pero con la diferen-
cia de que solo ejecutan los ficheros especificados en caso de
que no hayan sido incluidos o requeridos anteriormente.

17
Desarrollo web en entorno servidor | UNIDAD 2
Introduccion al lenguaje PHP

2.6. Operadores
En PHP se pueden utilizar los operadores habituales para las
operaciones aritméticas, lógicas, de manipulación de cadenas
y demás. En los operadores de comparación cabe destacar los
operadores “===” y “!===”, denominados Idéntico y No Idéntico,
que no existen en todos los lenguajes. El operador Idéntico es
utilizado para hacer comparaciones entre dos expresiones, y
evalúa como verdadero cuando las dos expresiones tienen el
mismo valor y el mismo tipo de dato. La diferencia con el ope-
rador Igual ,”==”, radica en que, cuando se comparan expresio-
nes que no tienen el mismo tipo de dato, intenta convertirlas
antes de compararlas. El operador Idéntico se utiliza para evitar
que surjan confusiones durante la conversión de datos.

Imagen 26. Ejemplo de operadores de comparación

En el ejemplo, el primer operador de comparación realiza la


conversión de la cadena “1” y la convierte a un número entero,
por lo que detecta que las variables son iguales. La salida será:

Las variables son iguales


Las variables no son idénticas

Operadores de comparación

Idéntico. Si las variables tienen el mismo


a === b
tipo de dato y valor será verdadero.

Igual. Si las dos expresiones, tras la conver-


a == b sión de tipos, tienen el mismo valor, será
verdadero.

a !== b No idéntico.

a != b, a <> b No igual.

a >= b, a > b,
Mayor o igual, mayor, menor o igual, menor.
a <= b, a < b

Empezando por la izquierda, devuelve la


a ?? b ?? c
primera expresión no nula.

18
Desarrollo web en entorno servidor | UNIDAD 2
Introduccion al lenguaje PHP

Operadores aritméticos

Teniendo un único operador y argumento,


+a sirve para transformar la expresión a integer
o float, según corresponda.

Teniendo un único operador y argumento,


-b
sirve para cambio de signo

a + b, a – b,
Suma, resta, multiplicación, división.
a * b, a / b

a % b Módulo.

a ** b Potencia.

Operadores lógicos

Y. es verdadero si las dos expresiones se


a and b, a && b
evalúan a TRUE.

O. Si una o las dos expresiones es TRUE, se


a or b, a || b
evalúa como verdadero.

O exclusivo. Es verdadero si solo una de las


a xor b
dos expresiones es TRUE.

Es verdadero si la expresión es FALSE, y


!a
viceversa.

Operadores a nivel de bit

a & b, a | b,
Y, O, O exclusivo y negación.
a ^ b, ~a

Desplaza los bits de $a, $b pasos a la dere-


$a >> $b
cha (cada paso es dividir por dos).

Desplaza los bits de $a, $b pasos a la


$a << $b
izquierda (cada paso es multiplicar por dos).

Operadores de asignación

$a = b Asignación por valor.

$a = &$b Asignación por referencia.

Equivalente a $a = $a + b, $a = $a – b…
$a += b, $a
-= b, $a *=
b, $a /= b Es válido para cualquier operador binario
aritmético, de cadenas o arrays.

Otros operadores

$a++, $a-- Devuelve $a, luego le suma (o resta) 1.

Suma (o resta) 1 a $a, devuelve el valor


++$a, --$a
actualizado

$str1 . $str2 Concatena dos cadenas.

19
Desarrollo web en entorno servidor | UNIDAD 2
Introduccion al lenguaje PHP

2.7. En PHP los arrays son una estructura muy flexible y potente, ya
Arrays

que, donde en otros lenguajes necesitas arrays básicos, vec-


tores, listas o diccionarios, aquí se unifica todo en un solo tipo.
Los componentes de un array se identifican por una clave, que
puede ser un número entero o una cadena. Los elementos tie-
nen un orden dentro del array, que está determinado por el or-
den de los elementos al declarar el array o al añadirse nuevos.

Para declarar un array se utiliza la función array().

$var = array(
clave1 => valor1,

claveN => valorN
);

Se pueden utilizar también los corchetes

$var = [
clave1 => valor1,

claveN => valorN
];

Para acceder a los elementos del array se utilizan los corche-


tes con su clave, como se realiza en otros lenguajes:

$var[clave] = valor;

Imagen 27. Declaración y modificación de arrays

La salida de este script es:

Array ( [1] => 111 [2] => 222 [3A] => 333 )
Posición 3A: 333
Posición 1: 111
Array ( [1] => 555 [2] => 222 [3A] => 333 )

Para recorrer un array lo común es utilizar el bucle foreach.

foreach($var as $valor) {

}

20
Desarrollo web en entorno servidor | UNIDAD 2
Introduccion al lenguaje PHP

En el foreach, las instrucciones del bucle se ejecutan una vez


por cada elemento del array $var. En cada iteración del bucle
$valor almacena el elemento que corresponda.

También se puede utilizar especificando una variable para la clave,

foreach($var as $clave => $valor){…}

Imagen 28. Ejemplo de uso del foreach

Si lo que se desea es modificar el valor del array al recorrer-


lo con un bucle foreach, se tiene que utilizar una referencia al
declarar las variables del bucle, ya que de otro modo no se
modificará el array.

Imagen 29. Modificar valores del array

La salida es:

Array ( [Pedro] => 17 [Laura] => 22 )


Array ( [Pedro] => 22 [Laura] => 27 )

Es posible declarar un array sin utilizar claves, por lo que se


asignarán las claves automáticamente con números enteros
consecutivos empezando por el 0.

La salida es:

Array ( [0] => 10 [1] => 20 [2] => 30 [3] => 40 )


Array ( [0] => 10 [1] => 20 [2] => 30 [3] => 40 [4] => 5 ) Imagen 30. Declarar array sin claves
Array ( [0] => 10 [1] => 20 [2] => 30 [3] => 40 [4]
=> 5 [10] => 6 [11] => 5 )

21
Desarrollo web en entorno servidor | UNIDAD 2
Introduccion al lenguaje PHP

Como se puede observar mediante el anterior ejemplo, si se


añade un elemento sin especificar la clave, la clave que se
asignará será el número siguiente a la mayor clave entera pre-
sente en el array.

Se pueden utilizar también algunos operadores en los arrays:

Operadores para arrays

Operador Descripción

Idéntico. Es verdadero si ambos arrays tienen las


$a === $b mismas claves y mismos valores. En el mismo
orden y del mismo tipo.

$a !== $b No idéntico.

Igual. Es verdadero si ambos arrays tienen las


$a == $b
claves y los valores iguales.

$a != $b,
No igual.
$a <> $b

$a + $b Unión. Genera un array con los elementos de ambos.

Como ya se ha definido, el operador “+” sirve para devolver la


unión entre dos arrays. El array resultante contará con los pri-
meros elementos del primer array (el que aparece a la izquier-
da del operador) seguido de los del segundo, pero sin repetir
claves. Si se diera el caso de que se unen arrays que cuentan
con las mismas claves, el resultante sólo tendrá los valores de
las claves del primer array.

Imagen 31. Unión de arrays

La salida, en este caso, es:

Array ( [1] => Pablo [2] => Maria [3] => Isabel )
Array ( [1] => Carlos [2] => Jesús [10] => Mercedes )
Array ( [1] => Pablo [2] => Maria [3] => Isabel [10]
=> Mercedes )

22
Desarrollo web en entorno servidor | UNIDAD 2
Introduccion al lenguaje PHP

2.8. Funciones y librerías


Una función puede definirse como un conjunto de instruccio-
nes que realizan una tarea concreta. Pueden recibir argumen-
tos para llevar a cabo su cometido, por ejemplo, si una función
se encarga de abrir ficheros, pues debe recibir como argumen-
to el nombre del fichero que se desea abrir.

Las funciones pueden devolver, o no, un valor, y en PHP no es nece-


sario declarar el tipo de dato que devuelve una función, de hecho,
puede devolver distintos tipos de datos dependiendo del caso. Por
ejemplo, en PHP existen muchas funciones que, en caso de error,
devuelven FALSE y no devuelven un boolean si no hay error.

2.8.1. Funciones predefinidas

PHP dispone de un gran número de funciones predefinidas que


realizan las tareas más habituales. Las más habituales son las que
guardan relación con las variables. Como en PHP las variables no
se declaran de forma explícita, existen una serie de funciones que
nos permiten conocer el estado y el tipo de dato de la variable
con la que estamos trabajando. Las más importantes son:

› is_null ($var). Devuelve TRUE si $var es NULL, y


FALSE en otro caso.

› isset ($var). Devuelve TRUE si $var ya ha sido decla-


rada y no tiene valor NULL, FALSE en otro caso.

› unset ($var). Elimina la variable, dejará de estar como


inicializada.

› empty ($var). Devuelve TRUE si $var no ha sido inicializada


o su valor es FALSE, devolverá FALSE en cualquier otro caso.

› is_int ($var), is_floar ($var), is_bool ($var),


is_array ($var). Devuelven TRUE si $var es entero, float,
booleano o array respectivamente, y FALSE si no lo son.

› print_r ($var) y var_dump ($var). Muestran infor-


mación sobre $var.

Imagen 32. Ejemplos de funciones predefinidas

23
Desarrollo web en entorno servidor | UNIDAD 2
Introduccion al lenguaje PHP

2.8.2. Funciones definidas por el usuario

La estructura para definir una función es:

function nombre (argumentos){


<instrucciones>
}

La función puede tener o no argumentos, y estos se declaran


en la cabecera de la función, van entre paréntesis y separados
por comas. Estos argumentos se tratan de variables locales a la
función que solo existen mientras se esté ejecutando. En PHP
no es necesario declarar el tipo de dato que va a devolver la
función, y, como se ha indicado antes, puede devolver distintos
tipos de datos según el caso.

Imagen 33. Ejemplo de función definida por el usuario

Se pueden definir unos valores por defecto para que se utilicen


en caso de que la función no reciba ningún argumento.

Imagen 34. Valor por defecto del argumento

La salida es:

Mi coche es un Mazda
Mi coche es un Seat

2.8.3. Paso de argumentos


por copia y por valor

En PHP los argumentos se pasan por copia, es decir, cuando


una función recibe una variable como argumento, se crea una
variable local a la función en la que se copia el valor del argu-
mento. Por lo que, si la función modifica el argumento, estos
cambios no se verán reflejados en la variable original.
Imagen 35. Argumentos
por copia y por valor

24
Desarrollo web en entorno servidor | UNIDAD 2
Introduccion al lenguaje PHP

La salida del programa es:

5
5
10
15

Al utilizar la función sumaMal() se le están sumando 5 unidades


al argumento, pero el valor de $a no cambia, para que este va-
lor se modifique se pueden existen varias opciones, como que
la función devuelva el nuevo valor y se reasigne, como hace la
función suma1(), o utilizar una referencia, como hace suma2(), y
solo se necesita añadir el símbolo “&” antes del argumento.

2.8.4. Funciones como argumentos

En PHP se pueden pasar funciones como argumentos a otras


funciones. Es una característica avanzada que se utiliza, entre
otras cosas, para las funciones de callback. Para ello solo se
necesita pasar el nombre de la función entrecomillada como
argumento. La función a la que se le pasa podrá utilizarla si
recibe los argumentos adecuados.

Imagen 36. Pasar funciones como argumentos

La salida del script es:

5
8

25
Desarrollo web en entorno servidor | UNIDAD 2
Introduccion al lenguaje PHP

2.9. Excepciones y errores


El sistema de control de errores en PHP se ha ido mejorando a lo
largo de su historia. En el sistema básico se generan errores de dis-
tintos tipos y se representan por un número. Sin embargo, a partir
de PHP 5 se introdujo un sistema de excepciones similar al de Java
y otros lenguajes utilizando bloques de try, catch y finally. Posterior-
mente, en PHP 7 aparecieron las excepciones de clase Error.

2.9.1. Errores

En el sistema básico, cuando se dan ciertas condiciones, como uti- › log_errors: con esta directiva se indica si los mensajes
lizar una variable no inicializada, PHP genera un error. Hay distintos de error se deben almacenar en un fichero. Esta opción
tipos de errores, y cada uno está relacionado con un número y una es útil en producción, cuando no se muestran los erro-
constante predefinida. El comportamiento de los errores en PHP res en la salida del script.
se puede controlar a través de tres directivas del fichero php.ini:
› error_log: en caso de que la directiva anterior esté
› error_reporting: se establecen los errores que se re-
activada, esta será la ruta en la que se almacenen los
mensajes de error.
portan. Lo más común es utilizar E_ALL, es decir, que se
reporten todos los errores. El valor que adopta la directiva error_reporting es un número,
› display_error: si está opción está activada, los mensajes
pero para especificarlo lo más normal es utilizar las constantes
predefinidas y el operador or a nivel de bit.
de error aparecerán en la salida del script. Esta opción es
interesante durante el desarrollo, pero no en producción.

Tipos de error

Código Constante Descripción

1 E_ERROR Error fatal durante la ejecución del programa que provoca que éste se detenga.

2 E_WARNING Advertencia durante la ejecución del programa, no detiene la ejecución.

4 E_PARSE Error de sintaxis al compilar.

8 E_NOTICE Notificación. Puede indicar un error o no.

16 E_CORE_ERROR Error fatal al iniciar PHP.

32 E_CORE_WARNING Advertencia al iniciar PHP.

64 E_COMPILE_ERROR Error fatal al compilar.

128 E_COMPILE_WARNING Advertencia en la compilación.

256 E_USER_ERROR Mensaje de error generado por el usuario.

512 E_USER_WARNING Mensaje de advertencia generado por el usuario.

1024 E_USER_NOTICE Mensaje de aviso generado por el usuario.

2048 E_STRICT Sugerencias de PHP para ofrecer una mejor compatibilidad con versiones posteriores.

4096 E_RECOVERABLE_ERROR Error fatal capturable.

8192 E_DEPRECATED Advertencia de código obsoleto, que no funcionará en futuras versiones.

16384 E_USER_DEPRECATED Igual que el anterior, pero generado por el usuario.

32767 E_ALL Todos los errores y advertencias.

26
Desarrollo web en entorno servidor | UNIDAD 2
Introduccion al lenguaje PHP

Funciones relacionadas

Mediante la función error_reporting() se permite cambiar el va-


lor de la directiva error_reporting en tiempo de ejecución.

Se puede definir también una función propia que se encargue


de los errores utilizando la instrucción de set_error_handler().
Para ello se tiene que seguir la siguiente estructura:

bool handler ( int $errno, string $errstr [, string


$errfile [, int $errline [, array $errcontext ]]] );

Imagen 37. Ejemplo para manejar los errores con una función propia

La salida es:

Se produjo un error:
Número: 2
Causa: Undefined variable $b
Archivo: /workspace/Main.php
Línea: 7

2.9.2. Excepciones

Se puede lanzar también una excepción para indicar un error.


Para trabajar con excepciones se tienen que utilizar bloques
try/catch/finally, como se hace también en Java. Si se lanza try {
una excepción y no se captura por un bloque catch, la ejecu- instrucciones;
ción del programa se finalizará. Si la excepción es capturada, el
} catch (Exception $e){
código de bloque correspondiente se ejecutará.
instrucciones;
Para poder capturar una excepción se debe colocar el error que } finally {
puede causarla dentro de un bloque try y se captura con el instrucciones;
catch correspondiente. Puede añadirse un bloque finally, que se
}
ejecuta después del try/catch, haya habido excepción o no.

Imagen 38. Ejemplo de manejo de excepciones

27
Desarrollo web en entorno servidor | UNIDAD 2
Introduccion al lenguaje PHP

Para lanzar la excepción se utiliza throw, que recibe como ar-


gumento un objeto de clase Exception o de alguna subclase.

La salida del anterior script es:

Excepción: Se está intentando dividir entre 0


Se ha pasado por el primer bloque finally
Resultado 2: 1.5
Se ha pasado por el segundo bloque finally

Se puede observar como en la línea 9 se hace una llamada a la


función de dividir, pasando como argumentos un 4 y un 0, por
lo que se produce una excepción, dejando de ejecutarse el blo-
que try y ejecutando el catch y el finally correspondientes. En el
segundo bloque try, en la línea 17, como ya no salta la excepción,
se ejecuta el try y el finally, y el bloque de catch no se ejecuta.

2.9.3. Excepciones Error

A partir de PHP 7 se introdujeron las excepciones de tipo Error,


y como no heredan las funciones de la clase Exception, para
capturarlas hay que utilizar:

catch (Error $e){



}

O utilizar la clase Throwable, de la que se derivan tanto Error


como Exception:

catch (Throwable $e){



}

Excepciones Error

Nombre Descripción Hereda de

Error Clase base para las excepciones Error

ArithmeticError Error en operaciones matemáticas Error

DivisionByZeroError Intento de división por cero ArithmeticError

Se genera cuando falla una llamada


AssertionError Error
a assert()

ParseError Error durante la compilación Error

Ocurre cuando no se tiene el tipo de


TypeError Error
dato esperado en una expresión

Se genera al llamar una función con


ArgumentCountError TypeError
menor argumentos de los necesarios

28
Desarrollo web en entorno servidor | UNIDAD 2
Introduccion al lenguaje PHP

2.10. Clases y objetos


PHP es un lenguaje de programación orientado a objetos, por
lo que permite definir clases, disponer de herencias, interfaces
y demás elementos habituales de este tipo de lenguajes. Para
poder declarar una clase se utiliza la palabra reservada class,
y para declarar sus atributos se utiliza el nombre que se les
quiera dar, los modificadores que pueda tener y, si se desea, se
establece un valor por defecto.

class Persona{
private $altura = 1.75; // con valor por defecto
private $nombre; // sin valor por defecto
private static $edad = 27; // estático

}

Los atributos y métodos pueden declararse como estáticos, de


modo que no habrá uno por objeto, sino uno por clase, para
ello se utiliza la palabra reservada static.

Existe la posibilidad de crear un constructor para la clase con


el método __construct(). Este método forma parte de los mé-
todos mágicos, que son nombres que se reservan para tareas
concretas y que se crea utilizando dos guiones bajos,”__”.

Para crear un nuevo objeto se utiliza el operador new, seguido


del nombre de la clase:

$objeto = new Clase();

Los atributos y métodos de las clases pueden utilizar modifica-


dores de visibilidad, que son:

› public. Los atributos y métodos pueden ser utilizados


desde dentro y fuera de la clase.

› private. Pueden utilizarse desde la propia clase.

› protected. Pueden ser utilizados dentro de la propia


clase, las derivadas y las antecesoras.

Los atributos suelen declararse de forma privada y se crean


métodos públicos para acceder a ellos. Para poder acceder a
los métodos y atributos se utiliza:

$objeto->propiedad;
$objeto->método(argumentos);

Se denomina métodos a las funciones que están definidas


dentro de una clase. En los métodos que no son estáticos se
puede utilizar la palabra reservada this, que sirve para repre-
sentar el objeto desde el que se ha invocado el método.

29
Desarrollo web en entorno servidor | UNIDAD 2
Introduccion al lenguaje PHP

Imagen 39. Creación de una clase

En el ejemplo anterior se muestra cómo crear una clase y crear


y manejar objetos de esta. La clase cuenta con un constructor,
y para ello se utiliza el método __construct(), que recibe los va-
lores cuando se crea el objeto miVehiculo. Se declaran también
una serie de métodos públicos que se encargan de poder leer
y reescribir los atributos, son los denominados getters y setters.

Se utiliza también el método __toString(), que se utiliza para generar


una cadena de texto con la información del objeto. Al pasar un obje-
to a echo, se representa utilizando el valor de retorno de __toString().

Imagen 40. Creación de una instancia de la clase Coche

La salida de este script será:

Vehículo: 2020 Gasolina


Vehículo: 2006 Diésel

Se puede crear una clase que herede de otra, es decir, que tenga los
mismos atributos y métodos que la clase de la que hereda, y que,
además, se le puedan añadir nuevos o sobreescribir los existentes.

Imagen 41. Ejemplo de herencia

La salida de este bloque de código es:

Coche: BMW 2010 Gasolina

30
Desarrollo web en entorno servidor | UNIDAD 2
Introduccion al lenguaje PHP

31

También podría gustarte