Bases de PHP
Empecemos por conocer el significado del acrónimo PHP: Hypertext Preprocessor, en español sería algo como “Preprocesador de Hipertexto”. El termino hipertexto nos relaciona de una vez con la web y con HTML.
Luego, PHP es un lenguaje de programación enfocado prinicipalmente en desarrollo de la capa de back-end en sistemas con interfaz Web. Es decir PHP va a ser el encargado de procesar y retornar resultados a partir de peticiones que el usuario realizará desde la capa de front-end.
Para que que PHP pueda ejecutarse como backend, debe estar relacionado a un servidor web. Entre los servidores web más populares están Apache y Ngix.
También es posible ejecutar PHP desde la línea de comandos. Esto constituye una ventaja porque podemos desarrollar scripts o programas que no necesitan interacción con el usuario, sino que pueden ser ejecutados por el propio sistemas operativo.
Como instalar PHP?
Es posible realizar la instalación de PHP en ambiente Linux, Windows y Mac. Recordando que para que pueda ejecutarse como backend debe estar relacionado a un servidor web.
Instalar en Windows
Para hacer la instalación en sistemas windows, lo recomendado es usar algun paquete que integrador de Servidor Web Apache + Servidor de Base de datos MySQL + PHP, entre los más populares están:
- Xampp — https://www.apachefriends.org/es/index.html
- Wamp Server— https://www.wampserver.com/en/
Lo interesante de los paquetes anteriores es que para realizar la instalación, es simple, sólo descargamos un programa y vamos siguiendo las instrucciones, que son de tipo asistente.
Instalar en Linux
La instalación en ambientes linux, es realizada a través de la terminal del sistema, en ese caso se debe instalar el servidor web y luego se debe instalar PHP. Para instalar el servidor web apache por ejemplo, en una distribución basada en debian o ubuntu (ver distribuciones linux) podemos ejecutar el siguiente comando:
sudo apt install apache2
Para instalar luego PHP ejecutamos el siguiente comando:
`sudo apt install php libapache2-mod-php
En el comando anterior, instalamos PHP para ejecutar scripts en la línea de comandos e instalamos el componente para que el servidor web Apache consiga ejecutar código PHP.
Sintaxis básica de PHP
Todo código PHP, debe comenzar por la instrucción <?php
y finalizar con la instrucción ?>
entonces el programa mínimo Hola Mundo en PHP sería así:
Ahora bien, recordando que PHP actua como backend para la interfaz web, entonces nosotros podemos escribir PHP y código HTML, por lo que un código Hola Mundo mejor elaborado es:
Notese que toda instrucción PHP siempre termina con ;
Desarrollando nuestro primer programa en PHP
Vamos a crear un script que sea capaz de recibir un par de números y realice las operaciones matemáticas básicas: sumar, restar, multiplicar y dividir. Para ello debemos de alguma forma enviarle los datos a nuestro script, como podemos hacer ello?
Para ello vamos a crear una interfaz (front-end), en este caso será un html que mediante la etiqueta form
sea capaz de recibir entradas input
de tipo numérico, que serán enviadas a nuestro script.
Variables en PHP
Como en todo en lenguaje de programación, PHP tiene el concepto de variables, que son espacio de memoria que nos permiten almacenar información de forma temporal, permitiéndonos manipularla y transformarla.
Como declaramos una variable en PHP?, muy simple:
$nombreVariable = <valor>
Para declarar una variable siempre iniciamos con el símbolo $
y luego una letra del alfabeto, seguidamente puede ser un texto, que no incluya espacios, ni caracteres especiales #-|
o caracteres fuera del alfabeto anglosajon como áçñ
.
El valor puede ser cualquiera, ejemplo: texto, numero enteros o decimales, valores lógicos true
o false
, esto es lo denominamos tipos de datos primitivos. De igual forma pueden ser datos complejos como: listas (arreglos) u objetos.
Tipos de datos en PHP
PHP es un lenguaje bastante libre en cuanto a los tipos de datos, es decir es de débil tipado, pues no es necesario indicar el tipo de dato que va almacenar la variable, como si lo son lenguajes como C++, C# o Java. Es decir que el interprete de código va a inferir el tipo de dato a partir del valor que contenga, pudiendo este tipo de dato cambiar de acuerdo con el cambio de valor de la variable. Tipos de datos que soporte PHP:
- Booleanos o lógicos
- Números enteros y decimales
- Cadenas de texto alfanuméricas
- Arreglos unidimensionales y multidimensionales
- Objetos
- Conjuntos
Programación funcional en PHP
En PHP podemos definir bloques de código que realizan tareas y devuelven un resultado, a este bloque de código lo denonimamos función y la podemos ejecutar tantas veces como sea necesario, de tal forma que ese conjunto de código sea responsable de realizar esa tarea, evitando duplicidad de código.
Tomando nuestro ejemplo definido en la sección nuestro primer programa en PHP, veamos como podemos estructurar funciones o bloques de código que sean responsables de realizar las operaciones de suma, resta, multiplicación y división:
Nuestro primer programa finalmente puede quedar de esta forma:
Tipos de datos Lista o Arreglos
En la mayoría de lenguajes de programación (por no decir todos) existe un tipo de dato que permite almacenar información agrupada, que por su naturaleza, la mejor forma de manipularla es mediante “Listas”. PHP no es la excepción, PHP tiene gestión de listas o arreglos (arrays).
Un ejemplo de un tipo de dato lista puede ser un conjunto de frutas, como declaramos esto en PHP? Así:
$frutas = array('Pera','Manzana','Naranja','Banana');
Ahora en la variable frutas
tenemos la lista de frutas disponible por ejemplo en un sistema de mercado. Otra forma de declarar la misma variable es:
$frutas = ['Pera','Manzana','Naranja','Banana'];
Esto seria la forma abreviada de declarar la lista o arreglo.
Ahora como accedemos a los cada elemento o item, accedemos mediante su posición, es lo que se denomina array indexado, es decir que a través de un índice (posición) podemos manipular cada elemento o item. La posición o índice inicial en este tipo de array es la 0. Entonces como podemos obtener la primera fruta, en nuestro ejemplo:
$primeraFruta = $frutas[0];
De esta forma $primeraFruta
va a tomar el valor pera
de acuerdo a este código.
En PHP existe otro tipo de arreglo, que se llama de array asociativo, en este caso no accedemos mediante un indice sino que podemos manipular los elementos mediante una llave. Este tipo de array a veces en otros lenguajes se denomina diccionario, porque se compone o se forma mediante el par llave => valor.
Siguiendo con el ejemplo de las frutas podemos definir el siguiente arreglo pero esta vez asociativo:
$edadPersonas = array('Leonardo'=>39,'Isve'=>33,'Diego'=>13);
Si queremos acceder a la edad de Diego por ejemplo podemos hacerlo de esta forma:
$edadDiego = $edadPersonas['Diego'];
Notese que en lugar de colocar la posición, usamos la llave, que en este caso es el nombre de la persona.
Los arreglos o arrays son tipo de datos poderosos que permiten manipular datos de forma óptima, pero a su vez existe un conjunto de funciones (recordar su concepto), que nos habilitan diversas funcionalides, como poder agregar un elemento al arreglo en cualquier parte del código, eliminar un elemento, verificar si existe un elemento, ordenar la lista, etc.
En este enlace podrás conseguir toda la documentación oficial para la administración de arrays en PHP
Operadores condicionales
Hasta ahora hemos mostrado código simple que sigue la ejecución un línea por vez pero de forma secuencial, pero sabemos que los sistema no siguen esa forma de ejecución, la realidad es que un programa puede tener N flujos diferentes, de acuerdo a “condiciones”. Es decir, se ejecuta un bloque de código (o funciones) siempre que la condición sea verdadera.
Para condiciones complejas, puede que se defina un bloque de código si es verdadera la condición y otro bloque de código si es falsa, es decir que no se cumple. Cómo hacemos esto en PHP?
En PHP existen las palabras reservadas if
y else
que permite definir condiciones, si se cumple o de lo contrario sino se cumple.
Vamos a definir un programa que valida si es posible vender un boleto de avión para una persona, basado en su edad.
// con este código obtenemos el valor enviado por el usuario via Web
$edad = $_REQUEST['edad'];// Sólo podemos vender boletos a personas de edad igual o mayor a 18
if ($edad >= 18) {
echo "Te podemos vender el boleto";
}
En el caso anterior vemos que validamos si la edad es igual o mayor a 18, si se cumple mostramos el mensaje, de que es posible vender el boleto. Observa que para validar una condición usamos los operadores de comparación:
- == El valor debe ser igual
- != El valor debe ser diferente
- > El valor debe ser mayor a
- < El valor debe ser menor que
- >= El valor debe ser mayor o igual a
- <= El valor debe ser menor o igual que
Ahora observa el código ajustado para mostrar un mensaje cuando sea verdadera o sea falsa la condición:
// con este código obtenemos el valor enviado por el usuario via Web
$edad = $_REQUEST['edad'];// Sólo podemos vender boletos a personas de edad igual o mayor a 18
if ($edad >= 18) {
echo "Te podemos vender el boleto";
} else {
echo "No es posible vender el boleto.";
}
Los operadores de condición son tan poderosos que podemos anidar o enlazar condiciones, además de evaluar n posibles valores. En ese caso entran en escena los operadores lógicos que te permiten evaluar:
- Si A y B. En PHP lo conocemos como
&&
- Si A o B. En PHP lo usamos como
||
- Si no se cumple B. En PHP se coloca como
!(condición)
Tomemos el mismo ejemplo y ahora, evaluemos si la persona viaja acompañada, eso es una variable lógica que solo puede tomar valores: true
o false
.
// con este código obtenemos el valor enviado por el usuario via Web
$edad = $_REQUEST['edad'];
$acompanado = $_REQUEST['acompanado'];// Sólo podemos vender boletos a personas de edad igual o mayor a 18
// "O" si la persona está acompañada.if ($edad >= 18 || $acompanado) {
echo "Te podemos vender el boleto";
} else {
echo "No es posible vender el boleto.";
}
Observa que usamos 2 condiciones y mediante el operador lógico O ||
pedimos a PHP que haga la evaluación del proceso de verificación de la condición.
Cuando tenemos un condición simple y debemos evaluarla en multiples ocasiones, podemos usar de PHP la palabras reservadas switch
case
, veamos el siguiente ejemplo, pensemos que vamos a regalarle una fruta a la persona de acuerdo a lo que eligió, para implementar ello, tenemos el siguiente código:
//Obtenemos el numero que el usuario envió
$numero = $_REQUEST['numero'];switch(numero) {
case 1: echo "Regalamos pera";
break;
case 2: echo "Regalamos manzana";
break;
caso 3: echo "Regalamos naranja";
break;
default:
echo "Número inválido";
break;
}
El ejemplo anterior, podemos traducir ese switch case
como: En caso de el número sea X, muestro el mensaje correspondiente, si no es un número válido (default case
) mostramos el mensaje de número inválido.
Operadores de repetición
Existen casos en lo que es necesario realizar un proceso más de una vez, es decir que debemos repetir la ejecución de un código, sólo que para ello no vamos a repetir su codificación, lo que vamos es a ejecutar el mismo código de acuerdo a lo que sea necesario.
En la mayoría de lenguajes incluyendo PHP existen 3 tipos de operadores de repetición:
- Repita mientras se cumpla la condición, puede que la condición no se cumpla nunca, en ese no se ejecuta nunca el bloque de código que queriamos repetir, o puede que se ejecute 1 o N veces.
- Repita hasta que se cumpla la condición, en este caso al menos 1 vez se va a ejecutar nuestro bloque de código repetible, notese la diferencia con el caso anterior.
- Repita para, generalmente cuando ya sabemos cuantas veces deseamos ejecutar el proceso.
Veamos un ejemplo, vamos a realizar el proceso de verificación de un número si es par o impar, desde 0 hasta N, donde N es un número que nos da el usuario. Como sabemos si un número es par? Si el número es divisible entre 2, es decir que si lo divimos entre 2, da un número entero como resultado.
Usando repita mientras. La sintaxis básica de esta operación es:
while (condicion verdadera){
//Bloque de código a repetir
}
Ahora con nuestro ejemplo:
//Obtenemos el numero que el usuario envió
$numero = $_REQUEST['numero'];
$i = 0; //Contador que va a ir evaluando cada número que existe
// entre 0 y el número que envió el usuariowhile ($i <= $numero) { //condición a evaluar
if ($i % 2) { //Verificamos si cada número es divisible
echo "$i es un número par"; } else {
echo "$i es un número Impar"
}
$i++; //Avanzamos al siguiente número y volvemos a ejecutar todo
}
Se observa que vamos a repetir mientras el número actual $i
es menor o igual al número enviado por el usuario. Si el número es menor 0, no se ejecuta nunca el proceso de verificación.
Usando repita hasta. La sintaxis básica de esta operación es:
do{
//Bloque de código a repetir
}while (condicion verdadera)
En nuestro ejemplo:
//Obtenemos el numero que el usuario envió
$numero = $_REQUEST['numero'];
$i = 0; //Contador que va a ir evaluando cada número que existe
// entre 0 y el número que envió el usuariodo {
if ($i % 2) { //Verificamos si cada número es divisible
echo "$i es un número par";
} else {
echo "$i es un número Impar"
}
$i++; //Avanzamos al siguiente número y volvemos a ejecutar todo
} while ($i <= $numero) //condición a evaluar
Notese que en este caso, si el numero un número menor que 0, al menos una vez se va a ejecutar el proceso, por favor tener en cuenta ello a la hora de elegir el método de repetición.
Usando repita para. La sintaxis básica de esta operación es:
for($variable;(condicion);$incremento){
//Bloque de código a repetir
}
Como comentabamos, el uso del repita para en general tiene asociado una cantidad de veces a ejecutar, como el caso de nuestro ejemplo, que la cantidad de veces es el conjunto de números existente entre el 0 y el número enviado por el usuario.
//Obtenemos el numero que el usuario envió
$numero = $_REQUEST['numero'];for($i = 0;$i <= $numero;$i++) {
if ($i % 2) { //Verificamos si cada número es divisible
echo "$i es un número par";
} else {
echo "$i es un número Impar"
}
}
Observa que en este caso no declaramos el número actual antes del repita, sino que es parte de la estructura, de igual forma el avance hacia el siguiente número, lo tenemos en la misma estructura, por lo que en este caso el código queda más pequeño que en los otros casos. Por ello, es importante tener en cuenta todos estos aspectos a la hora de elegir el método de repetición.
Existe un tipo de repetición asociado a listas, que nos permite recorrer la lista y realizar operaciones por cada elemento, en este caso hablamos del foreach
.
La sintaxis básica de esta operación es:
foreach($arreglo as $item) {
//Bloque de código a repetir
}
En ese caso, vamos a tener cada valor del arreglo disponible en cada proceso de repetición, dentro de la variable $item
.
Veamos el ejemplo de las frutas. Vamos a pedirle al usuario una fruta y vamos a verificar si la tenemos en nuestra casa, para ello definimos un arreglo o lista de frutas que tenemos en casa:
$frutasEnCasa = array('Naranja','Pera','Fresa','Banana');$frutaDelUsuario = $_REQUEST['fruta'];foreach($frutasEnCasa as $fruta) {
if ($frutaDelUsuario == $fruta) {
echo "Si tenemos $fruta";
} else {
echo "No tenemos $fruta en casa";
}
}
Revisando el código anterior, podemos observar que validamos una condición, si la fruta que el usuario envió está dentro del arreglo, recorriéndolo uno por uno.
Un tip, esa funcionalidad que implementamos con el foreach
la tenemos ya hecha en la funcion in_array($item,$lista)
, que verifica si un item está dentro de un arreglo, pero con foreach
puede validar para item
cualquier bloque de código, la idea del ejemplo es mostrar como es posible hacer el recorrido de los elementos.