|
|
Línea 3: |
Línea 3: |
| | | |
| {{PHP/Introduccion}} | | {{PHP/Introduccion}} |
− |
| |
− | </div>
| |
− |
| |
− | <div id=apuntes_distancia>
| |
− |
| |
− | <div class="slide">
| |
− | ==Introducción a PHP==
| |
− | <br />
| |
− | {{MRM_Objetivos|Title=Sección de introducción a PHP|
| |
− | * En esta sección veremos qué es el lenguaje PHP y para qué sirve.
| |
− | }}
| |
− | </div>
| |
− |
| |
− | <div class="slide">
| |
− | ===Qué es PHP===
| |
− | * '''''PHP''''' (acrónimo de PHP: Hypertext Preprocessor)
| |
− | * PHP es un lenguaje de código abierto, muy popular y con una gran comunidad de soporte en internet que aporta, colabora y resuelve dudas.
| |
− | * Especialmente adecuado para el desarrollo web (aunque se puede usar en el escritorio, no es su principal propósito).
| |
− | * Actualmente, la versión estable es la 8.3, pero en el repositorio de Ubuntu está la versión 8.2 recomendada para desarrollo.
| |
− | * Para más información sobre las nuevas características de PHP:
| |
− | {{MRM_Recursos de la Web|Title=Características de PHP 8.3|
| |
− | https://www.php.net/releases/8.3/es.php
| |
− | }}
| |
− | </div>
| |
− |
| |
− | <div class="slide">
| |
− | ;Características de PHP
| |
− | {{MRM_Resumen|Title=Recuerda|
| |
− | * '''''En el desarrollo web''''' PHP:
| |
− | # Se ejecuta en el '''''servidor web'''''.
| |
− | # Está '''''incrustado en HTML'''''.
| |
− | # El cliente solo ve '''''el resultado de la ejecución, nunca el código'''''.
| |
− | }}
| |
− | </div>
| |
− |
| |
− | <div class="slide">
| |
− | ;Obtención del lenguaje de marcas para mostrar en el cliente
| |
− | [[Imagen:procesoPHP.png]]
| |
− | {{MRM_Puntos clave|
| |
− | ; El documento PHP, interpretado correctamente en el servidor, produce una página HTML que será enviada al cliente.
| |
− | }}
| |
− | </div>
| |
− |
| |
− | <div class="slide">
| |
− | ;El servidor en acción
| |
− | {{MRM_Puntos clave|
| |
− | ; El código PHP está embebido en documentos HTML, lo cual permite añadir dinamismo fácilmente a un sitio web.
| |
− | }}
| |
− | </div>
| |
− |
| |
− | <div class="slide">
| |
− | ;El servidor en acción
| |
− | {{MRM_Puntos clave|
| |
− | ; El intérprete PHP ignora el texto HTML hasta que encuentra una etiqueta de inicio de código PHP embebido.
| |
− | * Entonces interpreta las instrucciones hasta el final de la etiqueta y genera la salida correspondiente, que se añade al documento HTML entregado al cliente (si las instrucciones lo requieren).
| |
− | }}
| |
− | </div>
| |
− |
| |
− | <div class="slide">
| |
− | ===Restricciones del servidor con PHP===
| |
− | * PHP, al ejecutarse del lado del servidor, solo puede acceder a los datos del propio servidor:
| |
− | ** No puede acceder a los recursos del cliente.
| |
− | ** No puede saber la hora en el cliente.
| |
− | ** No puede acceder a los archivos del cliente (excepto mediante Cookies).
| |
− | </div>
| |
− |
| |
− | <div class="slide">
| |
− | ===Configuraciones===
| |
− | ; PHP se puede instalar de dos formas:
| |
− | * Como un servicio independiente utilizando '''PHP-FPM (FastCGI Process Manager)'''.
| |
− | * Como un módulo de Apache, usando '''php8.3-mod''' (octubre de 2024).
| |
− |
| |
− | * Ejecutar PHP como un servicio independiente con PHP-FPM suele ser más eficiente en términos de gestión de memoria, lo cual es preferido en entornos de producción. Esta decisión está más relacionada con la administración de servidores.
| |
− | </div>
| |
− |
| |
− | <div class="slide">
| |
− | ;Configuración
| |
− | * Por comodidad, vamos a instalar PHP como un módulo de Apache2 para centralizar el servicio en Apache.
| |
− | * En entornos de producción, es común instalarlo como servicio independiente (PHP-FPM).
| |
− | * Si modificamos los archivos de configuración, es necesario reiniciar Apache o Nginx, además del servicio PHP, para aplicar los cambios.
| |
− | * Al instalar PHP como módulo o servicio independiente, se genera un archivo de configuración ''php.ini'', donde encontramos ''directivas que podemos modificar'', como la configuración de xdebug.
| |
− | </div>
| |
− |
| |
− | <div class="slide">
| |
− | ;Directivas de PHP.ini
| |
− | [http://www.php.net/manual/es/ini.list.php Lista de directivas]
| |
− | ===Versiones de PHP===
| |
− | * Historia y evolución del lenguaje:
| |
− |
| |
− | ;Funciones obsoletas en PHP 5.3.x
| |
− | [http://php.net/manual/es/migration53.deprecated.php Ver lista de funciones obsoletas]
| |
− |
| |
− | {{Nota|Las siguientes funciones quedaron obsoletas en PHP 5.3.x (versión de 2009). Aunque ya no recibe soporte, esta información es útil para entender la evolución de PHP.}}
| |
− |
| |
− | ;Características obsoletas en PHP 7.0.x
| |
− | [http://php.net/manual/es/migration70.deprecated.php Características obsoletas en PHP 7.0]
| |
− | [http://php.net/manual/es/migration70.incompatible.php Cambios incompatibles]
| |
− |
| |
− | ;Nuevas funcionalidades en PHP 7.4
| |
− | [http://php.net/manual/es/migration74.new-features.php PHP 7.4: mejoras]
| |
− |
| |
− | ;Nuevas funcionalidades en PHP 8.0
| |
− | * PHP 8.0 introdujo el compilador ''Just-in-time'' (JIT), ''union types'' y ''named arguments''.
| |
− | [http://php.net/manual/es/migration80.new-features.php PHP 8.0: mejoras]
| |
− |
| |
− | ;Nuevas funcionalidades en PHP 8.1
| |
− | * Incluye ''fibers'', ''readonly properties'' y ''array unpacking con claves''.
| |
− | [http://php.net/manual/es/migration81.new-features.php PHP 8.1: mejoras]
| |
− |
| |
− | ;Nuevas funcionalidades en PHP 8.2
| |
− | * PHP 8.2 añade ''readonly classes'' y ''disjunctive normal form types''.
| |
− | [http://php.net/manual/es/migration82.new-features.php PHP 8.2: mejoras]
| |
− |
| |
− | ;Nuevas funcionalidades en PHP 8.3
| |
− | * PHP 8.3 introduce ''json_validate()'', acceso a ''fetch properties of enum cases'' y mejoras en rendimiento.
| |
− | [https://php.watch/versions/8.3 Más sobre PHP 8.3]
| |
− | </div>
| |
− |
| |
− | <div class="slide">
| |
− |
| |
− | ==== Resumen de nuevas funcionalidades ====
| |
− |
| |
− | ;PHP 7.4
| |
− | * ''Arrow functions'': simplifica funciones anónimas.
| |
− | * ''Typed properties'': añade tipos a propiedades de clase.
| |
− | * ''Spread operator en arrays'': facilita la combinación de arrays.
| |
− |
| |
− | ;PHP 8.0
| |
− | * ''JIT'': mejora de rendimiento.
| |
− | * ''Union types'': permite múltiples tipos de datos.
| |
− | * ''Named arguments'': paso de parámetros por nombre.
| |
− |
| |
− | ;PHP 8.1
| |
− | * ''Fibers'': concurrencia sin hilos.
| |
− | * ''Readonly properties'': propiedades inmutables.
| |
− | * ''Array unpacking con claves'': expansión de arrays con claves asociativas.
| |
− |
| |
− | ;PHP 8.2
| |
− | * ''Dynamic properties deprecated'': propiedades dinámicas obsoletas.
| |
− | * ''Readonly classes'': clases inmutables.
| |
− | * ''Disjunctive normal form types'': más flexibilidad en tipos de unión.
| |
− |
| |
− | ;PHP 8.3
| |
− | * ''json_validate()'': validación JSON.
| |
− | * ''Fetch properties of enum cases'' y optimizaciones adicionales.
| |
− |
| |
− | </div>
| |
− |
| |
− | ===Cómo escribir PHP===
| |
− | *Dentro de páginas HTML:
| |
− | <source lang=php>
| |
− | <?php
| |
− | // Instrucciones de PHP aquí
| |
− | ?>
| |
− | </source>
| |
− |
| |
− | * Utilizaremos este estilo para escribir código.
| |
− | * Estilos obsoletos eliminados en PHP 7.0.0:
| |
− | {{MRM_Resumen|Title=Estilos obsoletos|
| |
− | * En la versión 7.0.0 de PHP se eliminaron:
| |
− | # '''<nowiki><%, %> (estilo ASP)</nowiki>'''
| |
− | # '''<nowiki><%= (echo abreviado)</nowiki>'''
| |
− | # '''<nowiki><script language=""></nowiki> (etiqueta <script>)''' }}
| |
− |
| |
− | * Guardamos el archivo con extensión .php para que el servidor interprete el código.
| |
− | </div>
| |
− |
| |
− | <div class="slide">
| |
− | {{MRM_Actividad|Title=Probando primer programa|
| |
− | {{MRM_Resumen|Title=Información| Existe una función llamada '''''phpinfo()'''''. Vamos a probarla y ver la información que genera.}}
| |
− | * Crea un programa en PHP que ejecute la función '''''phpinfo()'''''.
| |
− | {{Plegable|hide|Primer programa|
| |
− | <source lang=php>
| |
− | <html>
| |
− | <head>
| |
− | <meta charset="UTF-8">
| |
− | <title></title>
| |
− | </head>
| |
− | <body>
| |
− | <?php
| |
− | phpinfo();
| |
− | ?>
| |
− | </body>
| |
− | </html>
| |
− | </source>
| |
− | }}
| |
− | }}
| |
− | </div>
| |
− |
| |
− | <div class="slide">
| |
− | {{MRM_Actividad|Title=Probando la extensión|
| |
− | ; Verifica qué ocurre si el archivo no tiene la extensión .php
| |
− | }}
| |
− | </div>
| |
| | | |
| </div> | | </div> |