Cuando hablamos de lenguajes de programación populares, usualmente al tope de la lista está PHP, favorito entre los desarrolladores e ingenieros de software quienes utilizan los frameworks basados en este lenguaje para construir páginas web y aplicaciones modernas y multifuncionales. PHP es uno de los lenguajes de secuencias de comandos más populares y funciona en el lado del servidor. Su sigla significa “Preprocesador de Hipertexto” en español y está incrustado en HTML.
Desde octubre de 2018, PHP se usa en el 80 % de los sitios web cuyo lenguaje del lado del servidor es conocido. Generalmente, se usa en sitios web para generar contenido de página web de forma dinámica. Los casos de uso incluyen: sitios web y aplicaciones web (secuencias de comandos del lado del servidor), secuencias de comandos de línea de comandos, aplicaciones de escritorio (GUI). Permite: crear contenido web personalizado, enviar y recibir cookies, evaluar datos de formularios enviados desde un navegador, etc. Además de sus funciones, tiene integración con varias bases de datos populares como Postgre SQL, Oracle, Sybase, SQL y MySQL. También maneja formularios, guarda datos en archivos y recopila datos de archivos.
PHP es un lenguaje de secuencias de comandos de propósito general de código abierto ampliamente utilizado que es especialmente adecuado para el desarrollo web y se puede incrustar en HTML. Se puede definir como un lenguaje interpretado, dinámico y de alto nivel que se utiliza con aplicaciones web HTML. Javascript es, al igual que PHP, uno de los lenguajes de programación más populares. PHP es un lenguaje de secuencias de comandos del lado del servidor creado en 1995 por Rasmus Lerdorf.
Sintaxis Básica y Estructura de un Script PHP
Un script de PHP se puede colocar en cualquier parte de un documento. Este script empieza con <?php y termina con ?>. El código PHP está encerrado entre las etiquetas <?php y ?> y luego se puede incrustar en HTML. La extensión por defecto de los archivos PHP es: .php.
Sensibilidad a Mayúsculas y Minúsculas en PHP
En el lenguaje PHP, las palabras clave, por ejemplo else, echo, if, las clases, las funciones y las funciones que definen a un usuario no son sensibles a las mayúsculas o minúsculas.
Lea también: IVA 21% Excel
Pero, sorprendentemente, todos los nombres de las variables son sensibles a las mayúsculas y minúsculas. En el ejemplo siguiente, solo la primera declaración mostrará el valor de la variable $color.
echo "My car is " . $color .
echo "My house is " . $COLOR .
echo "My boat is " . $coLOR .
Existe una sintaxis abreviada para "echo", que consiste en forma todavía más sencilla de hacerlo, que es usando sólo un símbolo de "igual" (=). En versiones de PHP anteriores a la 5.4.0 puede no estar disponible, según sea la configuración del sistema. Si no queremos mostrar los decimales, podemos usar "printf", en vez de "echo". El código de formato "%d" hará que se muestre como un número entero.
Lea también: Guía IVA reducido
Variables y Tipos de Datos: Los Fundamentos de las Operaciones
Las variables son la forma principal de almacenar información en un programa PHP. Las variables en PHP son ese pequeño truco mágico que hace que todo funcione en la programación web. Son como esas cajitas donde metes cosas: números, textos, verdades o mentiras, y todo cambia según lo que necesites en ese momento. Sin ellas, no puedes hacer prácticamente nada. Para definir una variable deberemos usar un nombre que comience por el símbolo $. Todas las variables en PHP comienzan con un signo de dólar inicial como $variable_nombre. Para declararlas, simplemente pones un signo de dólar ($) delante y eliges un buen nombre: por ejemplo, $nombre, $edad, $precio. Para darles valor, usas el signo igual (=). Lo curioso es que PHP no te pide que le digas qué tipo de dato estás usando - eso lo decide él solo en tiempo de ejecución.
Reglas para Nombres de Variables en PHP
- Las declaraciones de variables comienzan con $, seguido del nombre de la variable.
- Los nombres de variables solo pueden comenzar con una letra mayúscula o minúscula o un guion bajo (_).
- Los nombres de variables solo pueden contener letras, números o guiones bajos (A-z, 0-9 y _). Otros caracteres especiales como + - % ( ) . & no son válidos.
- Los nombres de las variables distinguen entre mayúsculas y minúsculas.
Algunos ejemplos de nombres de variables permitidos: $mi_variable, $otraVariable, $laSegundaVariable.
Variables Predefinidas
PHP tiene varias palabras clave especiales que, si bien son nombres de variables "válidos", no se pueden usar para sus variables. La razón de esto es que el propio lenguaje ya ha definido esas variables y se utilizan para propósitos especiales. A continuación se enumeran varios ejemplos; para obtener una lista completa, consulte el sitio de documentación de PHP: $this, $_GET, $_POST, $_SERVER, $_FILES.
Tipos de Datos en PHP
Las variables pueden almacenar datos de diferentes tipos. Ahora, los tipos de datos en PHP son como diferentes cajas para distintas cosas. Para entenderlo mejor, pongamos algunos ejemplos prácticos: imagina que estás montando una tienda online sencilla.
- Cadena de caracteres (Strings): Una cadena (string) es una secuencia de caracteres. Estos se pueden utilizar para almacenar cualquier información textual en tu aplicación. Hay varias formas diferentes de crear cadenas en PHP.
- Comillas simples: Las cadenas simples se pueden crear usando comillas simples. $nombre = 'Maria'; Para incluir una comilla simple en la cadena, usa una barra invertida para escapar. $apellido = 'O\'Brian';
- Comillas dobles: También puedes crear cadenas usando comillas dobles. $nombre = "Maria"; Para incluir una comilla doble, usa una barra invertida para escapar. $cita = "Maria dijo: \"Quiero unas tostadas\", y luego salió corriendo."; Las cadenas entre comillas dobles también permiten secuencias de escape.
- Enteros: Un tipo de datos entero es un número no decimal entre -2,147,483,648 y 2,147,483,647. Reglas para números enteros: Los números enteros deben tener al menos un dígito, Los números enteros no deben tener un punto decimal, Los enteros pueden ser positivos o negativos. $x = 5;
- Float (también llamado doble): Un número flotante, o de punto flotante, es un número con un punto decimal. $x = 5.01;
- Boolean: Un booleano representa dos estados posibles: VERDADERO o FALSO. $y = false;
- Arreglo (Array): Un arreglo (array) almacena múltiples valores en una sola variable.
- Objeto: Una clase es una estructura de datos útil para modelar cosas en el mundo real y puede contener propiedades y métodos.
- NULL: Null es un tipo de datos especial que solo puede tener el valor null. Las variables pueden declararse sin valor o vaciarse estableciendo el valor en null.
- Recurso PHP: Un recurso es una variable especial que contiene una referencia a un recurso externo. Los recursos son creados y utilizados por funciones especiales.
Constantes
Las constantes son un tipo de variable en PHP. La función define() para establecer una constante toma tres argumentos: el nombre de la clave, el valor de la clave y un valor booleano (verdadero o falso) que determina si el nombre de la clave no distingue entre mayúsculas y minúsculas (falso de forma predeterminada). El valor de una constante no se puede modificar una vez que se establece. Si deseas usar esas constantes dentro de la clase Humano, puedes hacer referencia a ellas como self::CONSTANTE_NOMBRE. Si deseas usarlos fuera de la clase, debes referirte a ellos como Humano::CONSTANTE_NOMBRE.
Lea también: ¿Cómo localizar tus XML del SAT?
Operadores: Cómo PHP Manipula los Datos
Los operadores son los símbolos que nos permiten expresar las operaciones entre los datos en PHP al crear una tienda o página web. A nivel básico, las computadoras operan solo con números. Para sumar dos números en matemáticas, escribimos, por ejemplo, 3 + 4. En programación, es lo mismo. La aritmética en programación es prácticamente igual a la de la escuela. La instrucción 3 + 4; hará que el intérprete sume los números y obtenga el resultado. En un trabajo real, no es suficiente informar al intérprete sobre una expresión matemática. Por ejemplo, al crear una tienda en línea, no es suficiente pedirle al intérprete que calcule el costo de los productos en el carrito. Necesitamos pedirle al intérprete que sume 3 + 4 y darle una instrucción para hacer algo con el resultado.
PHP contiene todos los operadores normales que uno esperaría encontrar en un lenguaje de programación. Con los operadores podemos realizar operaciones entre uno o más valores. Toman unos valores de entrada, los relaciona entre sí y muestran un resultado. Los valores que relacionamos pueden estar dentro de variables o escritos dentro del propio código que estemos programando. Los operadores en PHP ofrecen métodos simples y eficientes para la manipulación de datos. Los operadores en PHP son símbolos especiales o cadenas para operaciones sobre variables de PHP y valores. Se utilizan para manipular datos, comprobar condiciones y realizar operaciones matemáticas. A menudo forman parte de funciones o clases en PHP. Pero los operadores también cumplen tareas esenciales en aplicaciones complejas.
Operadores Aritméticos
Las operaciones matemáticas son las habituales en la mayoría de lenguajes de programación: + - / *. Si pedimos operaciones numéricas, como sumar o multiplicar, los datos se convierten a numéricos automáticamente (si es posible). Por ejemplo, si sumamos una variable de valor 10 y otra de valor "7" (una cadena), el resultado será 17. La división por cero resulta en un error Division by zero. Siempre deja espacios entre los operadores aritméticos y los números (operandos) - esto es una buena práctica de programación.
Operadores de Asignación
Se usa un solo “=” como operador de asignación. Lo que tenemos a la derecha del operador se asigna a la variable que está a la izquierda. El operador += se puede usar para agregar un valor y asignarlo al mismo tiempo.
Operadores de Comparación
Un doble “==” o triple “===” se usa para la comparación. Los habituales “<” y “>” también se pueden usar para comparar. <=> es el comparador de orden, nuevo en PHP 7.0.X. Comparamos la edad ($age) con la edad mínima legal ($legalAge) para tener derecho a voto. El operador de comparación (>) comprueba si $age es mayor que $legalAge. En función de si es así o no, se obtiene si la persona tiene edad suficiente para votar y se combina la edad con el operador de concatenación. Al ejecutarlo nos dice que “a” es igual que “b” porque hemos utilizado el operador ==. En esta ocasión, obtenemos que a es distinto tipo que b.
Operadores de Concatenación
Lo más notable es el uso de "." para concatenar cadenas y “.=” para agregar una cadena al final de otra. Por ejemplo: $LaBienvenida = $saludo . $nombre . ";";
Operador de Fusión de Nulos
El operador ?? se utiliza para proporcionar un valor predeterminado si una variable es nula.
Estructuras de Control de Flujo
Los operadores también cumplen tareas esenciales en aplicaciones complejas y se utilizan para determinar estructuras de control.
La Sentencia If/Else
La duda que tenemos en este caso es qué operación realizará PHP y dará por buena. Para esto existen los paréntesis. Es una buena práctica envolver las condiciones individuales entre paréntesis cuando tienes más de una (puede mejorar la legibilidad). También hay una sintaxis alternativa para las estructuras de control. Un ejemplo de operador ternario es: $mensaje = 'Hola '.($usuario == !NULL ? $usuario : 'invitado');
La Sentencia Switch
En PHP, la declaración Switch es muy similar a la declaración Switch de JavaScript. Permite la prueba rápida de casos con muchas condiciones posibles diferentes. La instrucción break; sale del conmutador y continúa ejecutando el resto del código de la aplicación.
Funciones: Reutilización de Código y Parámetros
Una de las herramientas más importantes en cualquier lenguaje de programación son las funciones. Una función es un conjunto de instrucciones que a lo largo del programa van a ser ejecutadas multitud de veces. Es por ello, que este conjunto de instrucciones se agrupan en una función. La utilidad fundamental de las funciones es no tener que repetir partes de código comunes, que sería necesario repetir varias veces. Esas partes de código comunes se agrupan en funciones y simplemente llamaremos a la función cada vez que necesitamos ejecutar ese código.
Para llamar (hacer que se ejecute) la función usaremos esta sintaxis: nombre(par1, par2, par3, …, parN); donde par1, par2, par3, …, parN son los parámetros (información) que le pasamos a la función. Además, una función puede recibir parámetros externos de los cuales dependa el resultado de dicha función.
Funciones con Valores de Retorno
También podemos crear funciones que devuelvan datos (valores concretos). Estas funciones, que podríamos denominar “funciones en sentido estricto”, son aquellas que ejecutan un código y como punto final de dicho código incluyen una sentencia return seguida del resultado de la función. La sentencia return indica que cuando se alcanza se ha llegado al final de la función y se devuelve como resultado de la misma el contenido especificado a continuación del return.
- Por ejemplo return "No dispone de permisos" significa que la función devuelve esta cadena de texto.
- Otro ejemplo: return $calculo; indica que la función devuelve el contenido que se encuentre almacenado en la variable $calculo.
- Otro ejemplo: return "Lo sentimos ".$usuario." pero no dispone de permisos."
Fíjate que a diferencia de la función mostrarTexto, la función operaciones nos devuelve un valor concreto, de forma que se sustituye su invocación allí donde aparece por el valor que devuelve. Además, fíjate que la función mostrarTexto requería un parámetro, mientras que la función operaciones requiere tres parámetros.
Consideraciones sobre Tipado de Parámetros
A) En algunos lenguajes de programación se distinguen los términos “procedimiento” cuando un fragmento de código de este tipo ejecuta una serie de instrucciones sin devolver un valor, frente al término “función” que se aplica cuando un fragmento de código de este tipo ejecuta una serie de instrucciones y devuelve un valor.
B) En algunos lenguajes de programación como Java el tipado o especificación de tipos que se van a recibir por parte de la función (o el tipo de dato que va a devolver la función) es mucho más fuerte. Si te fijas, la función mostrarTexto recibe un parámetro denominado $texto, pero en ningún lado se especifica si dicho parámetro es tipo integer, float, double ó string. ¿De qué tipo es? Realmente no lo sabemos: el intérprete PHP se encarga de automáticamente reconocer el tipo que se le pasa a la función. Además, intentará ejecutar el código sea como sea el tipo del parámetro pasado.
Arreglos (Arrays)
Los arreglos son como variables regulares, pero contienen múltiples valores en una lista ordenada. Esto puede ser útil si tienes varios valores que están todos relacionados entre sí, como una lista de nombres de estudiantes o una lista de ciudades capitales.
Tipos de Arreglos
En PHP, hay dos tipos de arreglos: arreglos indexados y arreglos asociativos. Cada uno tiene su propio uso y veremos cómo crear estos arreglos.
- Arreglo Indexado: Un arreglo indexado es una lista de valores ordenados. A cada uno de estos valores en el arreglo se le asigna un número de índice. Por ejemplo, $lista_de_la_compra[0] devolvería "huevos", $lista_de_la_compra[1] devolvería "leche" y $lista_de_la_compra[2] devolvería "queso".
- Arreglo Asociativo: Un arreglo asociativo es una lista de valores a los que se accede a través de una clave en lugar de números de índice. Por ejemplo, $puntuacion_alumnos['Antonio'] devolvería 83, $puntuacion_alumnos['Jose'] devolvería 93 y $puntuacion_alumnos['Pedro'] devolvería 90.
- Arreglo Multidimensional: Un arreglo multidimensional es un array que contiene otros arrays.
Ordenación de Arreglos
PHP ofrece varias funciones para ordenar arreglos. A continuación describiremos las diferentes funciones incluyendo ejemplos.
- sort(): La función sort() ordena los valores de un arreglo en orden alfabético/numérico ascendente (por ejemplo, A, B, C, D, E...).
- rsort(): La función rsort() clasifica los valores de un arreglo en orden alfabético/numérico descendente (por ejemplo, Z, Y, X, W, V...).
- asort(): La función asort() ordena un arreglo asociativo, por sus valores, en orden alfabético/numérico ascendente (Ej. A, B, C, D, E...).
- ksort(): La función ksort() ordena un arreglo asociativo, por sus claves, en orden alfabético/numérico ascendente (Ej. A, B, C, D, E...).
- arsort(): La función arsort() clasifica un arreglo asociativo, por sus valores, en orden alfabético/numérico descendente (por ejemplo, Z, Y, X, W, V...).
- krsort(): La función krsort() ordena un arreglo asociativo, por sus claves en orden alfabético/numérico descendente (Ej. Z, Y, X, W, V...).
Manipulación de Formularios con PHP
Los formularios son una forma para que los usuarios ingresen datos o seleccionen datos de la página web. Los formularios pueden almacenar datos y permitir que la información se recupere para su uso posterior. Para hacer que un formulario funcione en lenguajes como PHP, necesita algunos atributos básicos en html. El atributo 'method' le dice al formulario la forma de enviar los datos del formulario. Luego, el atributo 'action' indica dónde enviar los datos del formulario para procesar. Ahora el atributo 'name' es muy importante y debe ser único porque en PHP el valor del nombre funciona como la identidad de ese campo de entrada.
Comprobación de las Entradas Requeridas
PHP tiene algunas funciones para verificar si se han cumplido las entradas requeridas. Esas funciones son isset, empty e is_numeric. Los isset controlan si el campo se ha establecido y no es nulo. Por ejemplo: echo "Campo Nombre establecido".
Instalación y Frameworks de PHP
PHP se puede instalar con o sin un servidor web.
Instalación en GNU/Linux
- En las distribuciones GNU/Linux basadas en Debian, puedes instalarlo mediante: sudo apt install php
- En Centos 6 o 7 puedes instalarlo con: sudo yum install php
- Después de la instalación, puedes ejecutar cualquier archivo PHP simplemente haciendo esto en la terminal: php file.php
- También puedes instalar un servidor localhost para ejecutar sitios web PHP. Para instalar el servidor web Apache: sudo apt install apache2 libapache2-mod-php
- O también puedes instalar PHP, MySQL y servidor web, todo instalando: XAMPP (paquete de solución con pila de servidor web multiplataforma gratuito y de código abierto) o paquetes similares como WAMP.
Frameworks PHP
Ya que escribir el código completo para un sitio web no es realmente práctico/viable para la mayoría de los proyectos, gran parte de los desarrolladores usan frameworks para el desarrollo web.
La ventaja de usar un framework es que:
- No tienes que reinventar la rueda cada vez que creas un proyecto, muchos de los matices ya están resueltos.
- Por lo general, están bien estructurados para ayudar en la separación de preocupaciones.
- La mayoría de los frameworks tienden a seguir las mejores prácticas del lenguaje.
- Muchos de ellos siguen el patrón MVC (Model-View-Controller) para separar la capa de presentación de la de lógica.
Frameworks populares: CodeIgniter, Laravel, Symfony, Zend, CakePHP, FuelPHP, Slim, Yii 2.
Consejos para el Aprendizaje y Depuración en PHP
Si te quedaste atascado, es el momento perfecto para hacer una pregunta en las "Discusiones". Asegúrate de incluir la salida de las pruebas. Sin ella, es casi imposible entender qué está mal, incluso si muestras tu código. Los programadores tienen dificultades para ejecutar el código en su mente, pero casi siempre es posible entender a dónde mirar a partir del error que recibiste.
Las pruebas están diseñadas de manera que verifican la solución de diferentes maneras y con diferentes datos. A menudo, una solución funciona con ciertos datos de entrada pero no con otros. Para entender este punto, revisa la pestaña "Pruebas" y presta atención a los mensajes de error, que suelen contener pistas. Mi código es diferente a la solución del profesor. Esto es normal. En programación, una tarea puede tener muchas soluciones diferentes.
Leí la lección, pero no entendí nada. Crear materiales de aprendizaje comprensibles para todos es bastante difícil. Hacemos nuestro mejor esfuerzo, pero siempre hay margen para mejorar. Si encuentras material que no entiendes, describe el problema en las "Discusiones". Es ideal si puedes formular los aspectos que no entiendes en forma de preguntas.
