Diferencia entre revisiones de «Plantilla:PHP/Introduccion»

De WikiEducator
Saltar a: navegación, buscar
(Cómo escribir PHP)
(Cómo escribir PHP)
 
(76 revisiones intermedias por el mismo usuario no mostrado)
Línea 1: Línea 1:
 +
{{#widget:Slides}}
 +
<div class="slides layout-regular template-default">
 +
 
<div class="slide">
 
<div class="slide">
 
==Introducción a PHP==
 
==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>
 
 
<div class="slide">
 
<div class="slide">
 
===Qué es php===
 
===Qué es php===
Línea 13: Línea 11:
 
*Es un lenguaje de código abierto
 
*Es un lenguaje de código abierto
 
*Muy popular (Podríamos pensar en un estándar?), una gran comunidad de soporte en internet que aporta, colabora y soluciona dudas
 
*Muy popular (Podríamos pensar en un estándar?), una gran comunidad de soporte en internet que aporta, colabora y soluciona dudas
*Especialmente adecuado para desarrollo web (Se puede usar como lenguaje de escritorio, pero no es su propósito).
+
*Especialmente adecuado para desarrollo web (Se puede usar como lenguaje de escritorio, pero no es su principal propósito).
*Actualmente está la versión 7.2, aún en beta (28-Septiembre-2017), siendo la 7.1.10 la última estable  
+
*La versión actualizada (Noviembre 2024) es la 8.3. Es considerada versión estable
 +
</div>
 +
 
 +
<div class="slide">
 +
;Versión de php
 +
*En el repositorio de ubuntu está especificada igualmente la versión 8.2,y se recomienda usarla como versión para desarrollo
 
*Ver las nuevas características de php  
 
*Ver las nuevas características de php  
{{MRM_Recursos de la Web|Title=Caracterísitcas de php 7|
+
{{MRM_Recursos de la Web|Title=Caracterísitcas de php 8.3|
http://php.net/manual/es/migration70.php
+
https://www.php.net/releases/8.3/es.php
 
}}
 
}}
*Se usa mucho la versión 5.9
 
 
</div>
 
</div>
  
 
<div class="slide">
 
<div class="slide">
;características de php
+
;Programación en el servidor
{{Tip|
+
{{MRM_Resumen|Title=Recuerda|
 
*'''''En las aplicaciones de desarrollo web '''''
 
*'''''En las aplicaciones de desarrollo web '''''
 
#Se ejecuta en el '''''servidor web'''''
 
#Se ejecuta en el '''''servidor web'''''
Línea 45: Línea 47:
 
{{MRM_Puntos clave|
 
{{MRM_Puntos clave|
 
;El código PHP está embebido en documentos HTML,  
 
;El código PHP está embebido en documentos HTML,  
;Esto permite  introducir dinamismo fácilmente a un sitio web.
+
;Esto permite  introducir dinamismo en las páginas web, lógicamente en el servidor.
 
}}
 
}}
 
</div>
 
</div>
Línea 59: Línea 61:
  
 
<div class="slide">
 
<div class="slide">
 +
 
===Restricciones del servidor con php===
 
===Restricciones del servidor con php===
 
*Como PHP se ejecuta del lado del servidor sólo puede tener acceso a los datos del propio servidor.
 
*Como PHP se ejecuta del lado del servidor sólo puede tener acceso a los datos del propio servidor.
Línea 69: Línea 72:
 
<div class="slide">
 
<div class="slide">
 
===Configuraciones===
 
===Configuraciones===
*PHP se puede instalar como un servicio independiente (PHP-FPM (FastCGI Process Manager)) o como un módulo de apache php5-mod. Realmente es más eficaz por temas de memoria que corra como un servicio independiente, siendo éste, un tema más de administración que de desarrollo.
+
;PHP se puede instalar de dos formas:
 +
*Un servicio independiente utilizando '''PHP-FPM''' (FastCGI Process Manager)
 +
*Un módulo de Apache, usando '''php8.3-mod''' (noviembre del  2024).  
 
</div>
 
</div>
  
 
<div class="slide">
 
<div class="slide">
;Configuración
+
;Configuraciones
Por comodidad (todo centrado en el servicio de apache2) en este módulo lo hemos instalado  como un módulo de apache, pero en producción se suele instalar como servicio independiente (en este caso se ha de rebotar el servicio de apache o ngix (según servidor) independientemente del servicio de php según los ficheros de configuración que se modifiquen en un momento dado.
+
*Ejecutar '''PHP''' como un servicio independiente con '''PHP-FPM''' suele ser más eficiente en términos de gestión de memoria, lo que lo convierte en una elección preferida para entornos de producción. Esta decisión está más relacionada con la administración de servidores que con el desarrollo en .
En cualquier caso, al instalar php, bien como módulo de apache o como servicio independiente, se crea un fichero de cofiguración dónde tenemos las diferentes directivas que podremos modificar (recordad xdebug que modificamos en php.ini).
+
 
</div>
 
</div>
 +
 +
  
 
<div class="slide">
 
<div class="slide">
;Directivas de PHP.ini
+
;Configuración
http://www.php.net/manual/es/ini.list.php
+
*Por comodidad, vamos a '''instalar PHP como un módulo de Apache2''', ya que esto permite tener todo centrado en el servicio de Apache.  
;Funciones que quedaron obsoletas en PHP 5.3.x
+
*Sin embargo, en entornos de producción, es común instalarlo como un servicio independiente (PHP-FPM).
http://php.net/manual/es/migration53.deprecated.php
+
*En este caso, cuando se hacen cambios en los archivos de configuración, es necesario reiniciar tanto el servicio de Apache o Nginx (según el servidor utilizado) como el servicio de PHP de manera independiente.
;Características obsoletas en PHP 7.0.x
+
http://php.net/manual/es/migration70.deprecated.php
+
http://php.net/manual/es/migration70.incompatible.php
+
 
</div>
 
</div>
  
 
<div class="slide">
 
<div class="slide">
===Cómo escribir PHP===
+
;Configuraciones
*Dentro de páginas html
+
*En cualquier caso, al instalar PHP, ya sea como un módulo de Apache o como un servicio independiente, se genera un archivo de configuración , donde encontramos ''diversas directivas que podemos modificar''.
'''<?php'''
+
* Un ejemplo de esto es la configuración de xdebug que se ajusta en el archivo php.ini.
  '' instrucciones''
+
'''?>'''
+
*Nosotros siempre usaremos este estilo para escribir código
+
*Lo podemos embeber en código html .... o no.
+
 
</div>
 
</div>
  
 
<div class="slide">
 
<div class="slide">
;Otros modos menos usados
+
;Directivas de PHP.ini
:Estilo asp
+
http://www.php.net/manual/es/ini.list.php
'''<%'''
+
  '' instrucciones''
+
'''%>'''
+
*Para ello hemos de tener habilitado la etiqueta de php.ini
+
asp_tags 1
+
 
</div>
 
</div>
  
 
<div class="slide">
 
<div class="slide">
;Estilo corto
+
===Versiones de PHP===
  '''<?'''
+
*Vamos a ver un poco de historia y evolución
  '' instrucciones''
+
   
  '''?>'''
+
;Funciones que quedaron obsoletas en PHP 5.3.x
*Para ello hemos de tener habilitado la etiqueta de php.ini
+
  http://php.net/manual/es/migration53.deprecated.php
short_open_tag 1
+
{{Nota|Las siguientes funciones quedaron obsoletas en PHP 5.3.x (versión lanzada en 2009). Aunque esta versión ya no recibe soporte oficial, esta información puede resultar interesante para entender la evolución del lenguaje.}}
 
</div>
 
</div>
  
 
<div class="slide">
 
<div class="slide">
;Sintaxis para editores HTML
+
;Características obsoletas en PHP 7.0.x
'''<SCRIPT LANGAGE="PHP">'''
+
  http://php.net/manual/es/migration70.deprecated.php
  '' instrucciones''
+
http://php.net/manual/es/migration70.incompatible.php
  '''</SCRIPT>'''
+
{{Tip|<nowiki>En la versión 7.0.0 de php se elimina las etiquetas siguientes:
+
<ul>
+
<ol>'''''<%, %> (formato ASP)'''''</ol>
+
<ol>#'''''#<%=  (formato corto)'''''</ol>
+
<ol>#'''''y la etiqueta de script <script language="php"'''''</ol></ul></nowiki>>
+
}}
+
*Guardamos el fichero con extensión .php
+
**Así sabemos que el interprete php tiene que ejecutar código
+
 
</div>
 
</div>
  
 
<div class="slide">
 
<div class="slide">
{{MRM_Actividad|Title=Probando primer programa|
+
;Nuevas funcionalidades en PHP 7.4
{{Tip|existen una función llamada '''''phpinfo()''''' que vamos a probar la información que genera}}
+
 
*Haz un programa que en php que ejecute la función '''''phpinfo()'''''
+
;''Principales mejoras''. Las nuevas características introducidas en PHP 7.4 incluyen:
{{Plegable|hide|Primer programa|
+
* la asignación de valores mediante ''arrow functions'',
<source lang=php>
+
* ''typed properties'' (propiedades tipadas),
<?php
+
* ''spread operator'' en arrays, entre otras.
<html>
+
{{MRM_Web|
    <head>
+
http://php.net/manual/es/migration74.new-features.php
        <meta charset="UTF-8">
+
        <title></title>
+
    </head>
+
    <body>
+
        <?php
+
            phpinfo();
+
        ?>
+
    </body>
+
</html>
+
?>
+
</source>
+
}}
+
 
}}
 
}}
 
</div>
 
</div>
 +
<div class="slide">
 +
 +
;Nuevas funcionalidades en PHP 8.0
 +
''Principales mejoras'': PHP 8.0 trajo grandes cambios, como el compilador ''Just-in-time'' (JIT), ''union types'' (tipos de unión), y la característica de ''named arguments'' (argumentos nombrados), permitiendo más flexibilidad en la llamada a funciones.
 +
http://php.net/manual/es/migration80.new-features.php
  
 +
;Nuevas funcionalidades en PHP 8.1
 +
''Principales mejoras'': PHP 8.1 agregó nuevas funcionalidades como ''fibers'' (para mejorar la concurrencia), ''readonly properties'' (propiedades de solo lectura) y ''array unpacking con claves''.
 +
http://php.net/manual/es/migration81.new-features.php
 +
</div>
 
<div class="slide">
 
<div class="slide">
  
===Dónde poner el código embebido===
+
;Nuevas funcionalidades en PHP 8.2
<br/>
+
''Principales mejoras'': PHP 8.2 introdujo mejoras como la eliminación de la ''dynamic properties'', la nueva clase ''readonly classes'', y la compatibilidad con ''disjunctive normal form types''.
{{MRM_Pregunta|Dónde escribir código php|{{feedback|Dónde queramos que se ejecute algo}} }}
+
http://php.net/manual/es/migration82.new-features.php
 
</div>
 
</div>
  
 
<div class="slide">
 
<div class="slide">
<hr  />
 
*Donde queramos que se ejecute algo
 
<hr/>
 
[[Imagen:codigoPHP.png|center|900px]]
 
*Se ejecuta como si fuera un solo programa
 
*A la hora de incluir php podemos se usa mucho la filosofía Modelo Vista /Controlador que veremos en otro tema
 
{{MRM_Resumen|Title=Modelo vista controlador|
 
*Trata de separar el código según su cometido, de forma muy resumida
 
*Hay acciones que realizan cálculos y obtienen resultados (Controlador
 
*Hay acciones que lo que hacen es visualziar valores (Vista)
 
*Hay acciones que se encargan de interactuar con la base de datos (Modelo)
 
}}
 
{{MRM_Puntos clave|Title=Empecemos aplicar el modelo vista controlador|
 
*Podemos llevar este criterio desde el principio siguiente el esquema siguiente
 
{{Plegable|hide|esqueleto MVC|
 
<source lang=html5>
 
</source>
 
}}
 
}}
 
  
{{MRM_Ejemplo|Title=Programa para ver si un número es o no par|
+
;Nuevas funcionalidades en PHP 8.3
No te preocupes si no entiendes el código, lo iremos viendo
+
''Principales mejoras'': PHP 8.3 incluye mejoras como las funciones ''json_validate()'', los ''fetch properties of enum cases'', y optimizaciones adicionales en el rendimiento.
<source lang=php>
+
https://php.watch/versions/8.3
<?php
+
https://www.php.net/releases/8_3_0.php
 
+
</div>
//-----------CONTROLADOR-----------------------------
+
//Instrucciones que realizan cálculos
+
//Guardo el resultado que quiero mostrar en variables
+
$a = rand(1, 100); //Genero un número aleatorio
+
$fecha = date("d m Y", time()); //Obtenemos la fecha
+
$title = "Hoy, $fecha, veremos si '$a' es par o impar "; //Creo un título
+
if ($a % 2 == 0) //Si el número es par
+
    $msj = "El número $a es par";
+
else
+
    $msj = "El número $a es impar";
+
?>
+
 
+
<!-- Ahora metemos el código php cuando lo necesitemos-->
+
<!------------------- VISTA (solo la parte php)----------------------->
+
<!DOCTYPE html>
+
<html>
+
    <head>
+
        <meta charset="UTF-8">
+
        <title>probando php</title>
+
    </head>
+
    <body>
+
        <h1> <?php echo $title ?></h1>
+
        <hr  />
+
        <h3> <?php echo $msj ?></h3>
+
 
+
    </body>
+
</html>
+
</source>
+
 
+
 
+
}}
+
  
 +
<div class="slide">
 +
==== Resumen de nuevas funcionalidades ====
  
 +
;PHP 7.4
 +
* Arrow functions (funciones flecha): para simplificar las funciones anónimas.
 +
* Typed properties (propiedades tipadas): agregando tipos a propiedades de clases.
 +
* Spread operator en arrays: para combinar arrays de manera más fácil.
 +
</div>
 +
<div class="slide">
  
 +
;PHP 8.0
 +
* JIT (Just-in-time compiler): mejora significativa de rendimiento.
 +
* Union types: permite a las funciones aceptar múltiples tipos de datos.
 +
* Named arguments: los parámetros pueden pasarse por nombre.
 +
</div>
 +
<div class="slide">
  
 +
;PHP 8.1
 +
* Fibers: permite concurrencia sin threads.
 +
* Readonly properties: propiedades de clase que solo pueden establecerse una vez.
 +
* Array unpacking con claves: expansión de arrays con claves asociativas.
 +
</div>
  
 +
<div class="slide">
 +
;PHP 8.2
 +
* Dynamic properties deprecated: las propiedades dinámicas son ahora obsoletas.
 +
* Readonly classes: clases completamente de solo lectura.
 +
* Disjunctive normal form types: más flexibilidad en tipos de unión.
 +
</div>
  
 +
<div class="slide">
 +
;PHP 8.3
 +
* json_validate(): para validar datos JSON.
 +
* Fetch properties of enum cases: permite acceder a propiedades de las enumeraciones.
 +
* Mejoras en rendimiento y optimización.
 
</div>
 
</div>
  
 
<div class="slide">
 
<div class="slide">
===Escribir PHP con directivas de inclusión===
+
===Cómo escribir PHP===
*Podemos escribir el código php escribiéndolo en un fichero  aparte y luego lo incluimos.
+
*Dentro de páginas html
**Incluimos el fichero explícitamente
+
**Para ello usamos directivas o instrucciones del tipo '''''include'''''
+
 
<source lang=php>
 
<source lang=php>
  include('ruta/nobrefichero');
+
<?php
  require('ruta/nobrefichero');
+
    instrucciones
  include_once('ruta/nombrefichero');
+
?>
  require_once('ruta/nombrefichero');
+
 
</source>
 
</source>
 +
*Nosotros siempre usaremos este estilo para escribir código
 +
*Otros estilos anteriormente permitido están en desuso o no permitidos
 
</div>
 
</div>
  
 
<div class="slide">
 
<div class="slide">
;Ambas son palabras reservadas del lenguaje y sirven para incluir el contenido de un fichero con sentencias php en esa posición del código.
+
 
{{MRM_Puntos clave|Title=Include Vs Require|
+
{{MRM_Resumen|Title=Estilo actualmente descatalogados|
*Ambas incluyen el contenido de un fichero php en esa posición
+
*En la versión 7.0.0 de php se eliminan(Desaconsejan) las etiquetas siguientes:
**Con include si no se encuentra se continúa ejecutando en esa posición
+
#'''''<nowiki><%, %> (formato ASP)</nowiki>'''''
**Con require si no está el fichero se detiene en ese punto la ejecución del script}}
+
#'''''<nowiki>#<%=  (formato corto)</nowiki>'''''
 +
#'''''<nowiki>y la etiqueta de script <script language=""</nowiki>'''''></script>
 +
}}
 
</div>
 
</div>
  
 
<div class="slide">
 
<div class="slide">
{{MRM_Puntos clave|Title=include/require Vs include_once/require_once |
+
*Guardamos el fichero con extensión .php
*Ambas incluyen el contenido de un fichero php en esa posición
+
**Así sabemos que el interprete php tiene que ejecutar código
**include/require siempre buscan e incluyen el fichero en esa posición
+
**include_once/require_once antes de incluirlo mira a ver si ya lo incluyó previamente en cuyo caso ya no lo hace}}
+
 
</div>
 
</div>
  
 
<div class="slide">
 
<div class="slide">
{{MRM_Actividad|Title=Probando include require
+
{{MRM_Actividad|Title=Probando primer programa|
|Crea 4 ficheros con el siguiente código
+
{{MRM_Resumen|Title=Información|existen una función llamada '''''phpinfo()'''''.  
'''''fichero_include.php'''''
+
*Vamos a probarla y ver la información que genera}}
 +
*Haz un programa que en php que ejecute la función '''''phpinfo()'''''
 +
}}
 +
{{Plegable|hide|Primer programa|
 
<source lang=php>
 
<source lang=php>
<?php
+
<html>
  echo "<b><i>Hola desde un fichero include </b></i><hr />";
+
    <head>
?>
+
        <meta charset="UTF-8">
 +
        <title></title>
 +
    </head>
 +
    <body>
 +
        <?php
 +
            phpinfo();
 +
        ?>
 +
    </body>
 +
</html>
 
</source>
 
</source>
'''''fichero_include_once.php'''''
+
}}
<source lang=php>
+
<?php
+
echo "<b><i>Hola desde un fichero include once </b></i><hr />";
+
?>
+
</source>
+
'''''fichero_require.php'''''
+
<source lang=php>
+
<?php
+
  echo "<b><i>Hola desde un fichero require </b></i><hr />";
+
?>
+
</source>
+
'''''fichero_require_once.php'''''
+
<source lang=php>
+
<?php
+
  echo "<b><i>Hola desde un fichero require once </b></i><hr />";
+
?>
+
</source>
+
'''''Ahora crea un programa principal dónde uses las instrucciones de inclusión vistas en este apartado'''''.
+
<source lang=php>
+
<?php
+
  
echo "<h2>Ahora vamos a incluir un fichero con include</h2>";
 
include 'ficheros/fichero_include.php';
 
  
echo "<h2>ahora vamos a incluir un fichero con require</h2>";
 
require 'ficheros/fichero_require.php';
 
  
echo "<h2>Ahora vamos a incluir un fichero con include_once</h2>";
+
</div>
include_once 'ficheros/fichero_include_once.php';
+
  
echo "<h2>Ahora vamos a incluir un fichero con require_once</h2>";
+
<div class="slide">
require_once 'ficheros/fichero_require_once.php';
+
{{MRM_Actividad|Title=Probando la extensión|
 
+
;Verifica a ver qué ocurre si la extensión del fichero no es php
echo "<h2>Ahora vamos a incluir un fichero que no existe  con include</h2>";
+
include 'ficheros/fichero_no_existe_include.php';
+
echo "Vemos que no pasa nada, por que el fichero no existe pero sigue <hr />";
+
 
+
echo "<h2>Ahora volvemos  a incluir un fichero con include_once</h2>";
+
include_once 'ficheros/fichero_include_once.php';
+
echo "Vemos que no pasa nada, por que el fichero ya se había incluido y no se vuelve a incluir<hr />";
+
 
+
echo "<h2>Ahora volvemos  a incluir un fichero con require_once</h2>";
+
require_once 'ficheros/fichero_require_once.php';
+
echo "Vemos que no pasa nada, por que el fichero ya se había incluido y no se vuelve a incluir<hr />";
+
 
+
echo "<h2>Ahora vamos a incluir un fichero con include para ver que sí que se vuelve a incluir</h2>";
+
include 'ficheros/fichero_include.php';
+
 
+
echo "<h2>Ahora vamos a incluir un fichero con require y vemos que sí se vuelve a incluir</h2>";
+
require 'ficheros/fichero_require.php';
+
 
+
echo "<h2>Ahora no incluimos con require un fichero que no existe</h2>";
+
require 'ficheros/fichero_no_existe_require.php';
+
echo "Esta línea ya no se imprimirá ni nada que vaya después de aquí";
+
?>
+
</source>
+
{{Tip|
+
*Siéntete cómoda en modificar el fichero y ver el resultado
+
*Observa que estas instrucciones no son exactamente funciones, por lo que no necesitan paréntesis (aunque se puede poner por mantener una homogeneidad con sintaxis del uso o invocación de funciones)
+
<source lang=php>
+
include 'ficheros/fichero_include.php'
+
//Es léxicamente y sintácticamente igual que
+
include ('ficheros/fichero_include.php');
+
 
+
</source>
+
}}
+
 
}}
 
}}
 
</div>
 
</div>
Línea 337: Línea 251:
  
  
<div class="slide">
 
{{MRM_Recursos de la Web|
 
*[http://php.net/manual/es/ php] página oficial en español LO MEJOR!!!!
 
*http://php.net/manual/es/
 
*<!-- MRM incluir en el otro documento http://php.net/manual/es/ini.core.php -->
 
  
}}
 
</div>
 
  
<div class=slide>
 
===Comentarios ===
 
*Son ignorados por el intérprete, no generan instrucciones, pero se consideran parte del software
 
*En php tengo 4 formas de hacer comentarios
 
<source lang=php>
 
<?php
 
/*
 
Este código no hace nada pero muestra
 
la sintaxis de los comentarios
 
como este que ocupa varias líneas tipo lenguaje C o Java
 
*/
 
$miVariable= 8;// Esta parte de la línea se ignorará
 
$miVariable+= 8;# y esta parte de línea tambien
 
echo "Valor de la variable $miVariable";
 
//Este es otro comentario de una sola línea
 
#Este es otro modo de hacer comentarios tipo script de linux
 
/**
 
Este comentario permite insertar información
 
Para que luego phpDocumentor genere una página web
 
Con la información de mi código
 
*/
 
</source>
 
*Este código nos visualizará lo siguiente
 
<source lang=php>
 
Valor de la variable 16
 
</source>
 
El resto del código será ignorado
 
</div>
 
  
<div class="slide">
 
*Aquí tienes la referencia para ver las diferentes directivas para generar código
 
*Más adelante en el curso las veremos.
 
{{MRM_Recursos de la Web|
 
*Directivas para comentarios https://phpdoc.org/docs/latest/index.html
 
}}
 
</div>
 
  
<div class="slide">
 
{{MRM_Actividad|Title=probando comentarios |
 
*Escribe la  siguiente función anterior en un fichero php
 
  
<source lang=php>
 
function miFuncion($num1, $num2){
 
    if ($num1>$num2)
 
        return $num1;
 
    else
 
        return $num2;
 
</source>
 
Ahora justo en la línea de encima de función escribe
 
<source lang=php>
 
/**
 
</source>
 
*y luego presiona intro
 
*Te debería de quedar
 
<source lang=php>
 
/**
 
*
 
* @param type $num1
 
* @param type $num2
 
* @return type
 
*/
 
function miFuncion($num1, $num2){
 
    if ($num1>$num2)
 
        return $num1;
 
    else
 
        return $num2;
 
 
 
</source>
 
}}
 
 
</div>
 
</div>

Última revisión de 17:02 7 nov 2024

Qué es php

  • PHP (acrónimo de PHP: Hypertext Preprocessor)

De php podríamos decir

  • Es un lenguaje de código abierto
  • Muy popular (Podríamos pensar en un estándar?), una gran comunidad de soporte en internet que aporta, colabora y soluciona dudas
  • Especialmente adecuado para desarrollo web (Se puede usar como lenguaje de escritorio, pero no es su principal propósito).
  • La versión actualizada (Noviembre 2024) es la 8.3. Es considerada versión estable
Versión de php
  • En el repositorio de ubuntu está especificada igualmente la versión 8.2,y se recomienda usarla como versión para desarrollo
  • Ver las nuevas características de php


Icon inter.gif
Caracterísitcas de php 8.3

https://www.php.net/releases/8.3/es.php


Programación en el servidor


Icon summary.gif
Recuerda
  • En las aplicaciones de desarrollo web
  1. Se ejecuta en el servidor web
  2. Es incrustado en HTML.
  3. El cliente solo ve el resultado de la ejecución nunca el código


Obtención del lenguaje de marcas para mostrar en el cliente

ProcesoPHP.png


Icon key points.gif

Puntos clave

El documento PHP, una vez interpretado correctamente en el servidor, produce una página HTML que será enviada al cliente.


El servidor en acción



Icon key points.gif

Puntos clave

El código PHP está embebido en documentos HTML,
Esto permite introducir dinamismo en las páginas web, lógicamente en el servidor.


El servidor en acción


Icon key points.gif

Puntos clave

El intérprete PHP ignora el texto del fichero HTML
Hasta que encuentra una etiqueta de inicio del bloque de código PHP embebido.
  • Entonces interpreta las instrucciones hasta el final de etiqueta generando la salida correspondiente que se añade al documento html que se entrega al cliente (en caso de que las instrucciones lo generen)


Restricciones del servidor con php

  • Como PHP se ejecuta del lado del servidor sólo puede tener acceso a los datos del propio servidor.
    • No puede acceder a los recursos del cliente
    • No puede saber qué hora es en el cliente
    • No puede acceder a los archivos del cliente
      • Salvo la excepción de las Cookies

Configuraciones

PHP se puede instalar de dos formas
  • Un servicio independiente utilizando PHP-FPM (FastCGI Process Manager)
  • Un módulo de Apache, usando php8.3-mod (noviembre del 2024).
Configuraciones
  • Ejecutar PHP como un servicio independiente con PHP-FPM suele ser más eficiente en términos de gestión de memoria, lo que lo convierte en una elección preferida para entornos de producción. Esta decisión está más relacionada con la administración de servidores que con el desarrollo en sí.


Configuración
  • Por comodidad, vamos a instalar PHP como un módulo de Apache2, ya que esto permite tener todo centrado en el servicio de Apache.
  • Sin embargo, en entornos de producción, es común instalarlo como un servicio independiente (PHP-FPM).
  • En este caso, cuando se hacen cambios en los archivos de configuración, es necesario reiniciar tanto el servicio de Apache o Nginx (según el servidor utilizado) como el servicio de PHP de manera independiente.
Configuraciones
  • En cualquier caso, al instalar PHP, ya sea como un módulo de Apache o como un servicio independiente, se genera un archivo de configuración , donde encontramos diversas directivas que podemos modificar.
  • Un ejemplo de esto es la configuración de xdebug que se ajusta en el archivo php.ini.

Versiones de PHP

  • Vamos a ver un poco de historia y evolución
Funciones que quedaron obsoletas en PHP 5.3.x
http://php.net/manual/es/migration53.deprecated.php

(Comment.gif: Las siguientes funciones quedaron obsoletas en PHP 5.3.x (versión lanzada en 2009). Aunque esta versión ya no recibe soporte oficial, esta información puede resultar interesante para entender la evolución del lenguaje.)


Nuevas funcionalidades en PHP 7.4
Principales mejoras. Las nuevas características introducidas en PHP 7.4 incluyen
  • la asignación de valores mediante arrow functions,
  • typed properties (propiedades tipadas),
  • spread operator en arrays, entre otras.



Nuevas funcionalidades en PHP 8.0

Principales mejoras: PHP 8.0 trajo grandes cambios, como el compilador Just-in-time (JIT), union types (tipos de unión), y la característica de named arguments (argumentos nombrados), permitiendo más flexibilidad en la llamada a funciones.

http://php.net/manual/es/migration80.new-features.php
Nuevas funcionalidades en PHP 8.1

Principales mejoras: PHP 8.1 agregó nuevas funcionalidades como fibers (para mejorar la concurrencia), readonly properties (propiedades de solo lectura) y array unpacking con claves.

http://php.net/manual/es/migration81.new-features.php
Nuevas funcionalidades en PHP 8.2

Principales mejoras: PHP 8.2 introdujo mejoras como la eliminación de la dynamic properties, la nueva clase readonly classes, y la compatibilidad con disjunctive normal form types.

http://php.net/manual/es/migration82.new-features.php
Nuevas funcionalidades en PHP 8.3

Principales mejoras: PHP 8.3 incluye mejoras como las funciones json_validate(), los fetch properties of enum cases, y optimizaciones adicionales en el rendimiento.

https://php.watch/versions/8.3
https://www.php.net/releases/8_3_0.php

Resumen de nuevas funcionalidades

PHP 7.4
  • Arrow functions (funciones flecha): para simplificar las funciones anónimas.
  • Typed properties (propiedades tipadas): agregando tipos a propiedades de clases.
  • Spread operator en arrays: para combinar arrays de manera más fácil.
PHP 8.0
  • JIT (Just-in-time compiler): mejora significativa de rendimiento.
  • Union types: permite a las funciones aceptar múltiples tipos de datos.
  • Named arguments: los parámetros pueden pasarse por nombre.
PHP 8.1
  • Fibers: permite concurrencia sin threads.
  • Readonly properties: propiedades de clase que solo pueden establecerse una vez.
  • Array unpacking con claves: expansión de arrays con claves asociativas.
PHP 8.2
  • Dynamic properties deprecated: las propiedades dinámicas son ahora obsoletas.
  • Readonly classes: clases completamente de solo lectura.
  • Disjunctive normal form types: más flexibilidad en tipos de unión.
PHP 8.3
  • json_validate(): para validar datos JSON.
  • Fetch properties of enum cases: permite acceder a propiedades de las enumeraciones.
  • Mejoras en rendimiento y optimización.

Cómo escribir PHP

  • Dentro de páginas html
 <?php
    instrucciones
 ?>
  • Nosotros siempre usaremos este estilo para escribir código
  • Otros estilos anteriormente permitido están en desuso o no permitidos


Icon summary.gif
Estilo actualmente descatalogados
  • En la versión 7.0.0 de php se eliminan(Desaconsejan) las etiquetas siguientes:
  1. <%, %> (formato ASP)
  2. #<%= (formato corto)
  3. y la etiqueta de script <script language=""></script>


  • Guardamos el fichero con extensión .php
    • Así sabemos que el interprete php tiene que ejecutar código


Icon activity.jpg
Probando primer programa


Icon summary.gif
Información
existen una función llamada phpinfo().
  • Vamos a probarla y ver la información que genera


  • Haz un programa que en php que ejecute la función phpinfo()





Icon activity.jpg
Probando la extensión
Verifica a ver qué ocurre si la extensión del fichero no es php