fbpx
Wikipedia

PHP

PHP es un lenguaje de programación de uso general que se adapta especialmente al desarrollo web.[2]​ Fue creado inicialmente por el programador danés-canadiense Rasmus Lerdorf en 1994.[3]​ En la actualidad, la implementación de referencia de PHP es producida por The PHP Group.[4]​ PHP originalmente significaba Personal Home Page (Página personal), pero ahora significa el inicialismo[n 1]​ recursivo PHP: Hypertext Preprocessor.[6]

PHP
Desarrollador(es)
PHP Group
https://www.php.net
Información general
Extensiones comunes .php, .phtml, .php3, .php4, .php5, .php7, .phps, .php-s, .pht, .phar
Paradigma Multiparadigma: imperativo, funcional, orientado a objetos, procedural, reflexivo
Apareció en 1995
Diseñado por Rasmus Lerdorf
Última versión estable 8.0.8[1](1 de julio de 2021 (1 mes y 15 días))
Sistema de tipos Dinámico, débil
Implementaciones Motor Zend, HHVM, Phalanger, Quercus, Project Zero, Parrot
Influido por Perl, C, C++, Java, Tcl
Ha influido a Falcon, Hack
Sistema operativo Unix-like, Windows
Licencia Licencia PHP

El código PHP suele ser procesado en un servidor web por un intérprete PHP implementado como un módulo, un daemon o como un ejecutable de interfaz de entrada común (CGI). En un servidor web, el resultado del código PHP interpretado y ejecutado —que puede ser cualquier tipo de datos, como el HTML generado o datos de imágenes binarias— formaría la totalidad o parte de una respuesta HTTP. Existen diversos sistemas de plantillas, sistemas de gestión de contenidos y frameworks que pueden emplearse para organizar o facilitar la generación de esa respuesta. Por otra parte, PHP puede utilizarse para muchas tareas de programación fuera del contexto de la web, como aplicaciones gráficas autónomas[7]​ y el control de drones.[8]​ También se puede interpretar y ejecutar un código PHP cualquiera a través de una interfaz de línea de comandos (CLI).

El intérprete estándar de PHP, impulsado por Motor Zend, es un software libre publicado bajo Licencia PHP. PHP ha sido ampliamente portado y puede ser desplegado en la mayoría de los servidores web en casi todos los sistemas operativos y plataformas, de forma gratuita.

El lenguaje PHP evolucionó sin una especificación formal escrita o un estándar hasta 2014, con la implementación original actuando como el estándar de facto que otras implementaciones intentaban seguir. Desde 2014, se ha trabajado para crear una especificación formal de PHP.[9]

Para abril de 2020, más de la mitad de los sitios en la web que usan PHP siguen en la versión descontinuada[10]​ 5.6 o anterior.[11]​ y con la versión 7.0 y 7.1 más del 68%, que no están oficialmente soportadas por The PHP Development Team,[12]​ mientras que el soporte de seguridad es proporcionado por terceros, como Debian (hasta junio de 2020 para PHP 5).[13]​ Adicionalmente, la versión 7.2, la versión con soporte más popular, dejará de recibir actualizaciones de seguridad el 30 de noviembre de 2020.[10]

Visión general

PHP puede ser desplegado en la mayoría de los servidores web y en todos los sistemas operativos y plataformas sin costo alguno. El lenguaje PHP se encuentra instalado en más de 20 millones de sitios web y en un millón de servidores. Migrar los servicios basados en PHP hacia las nuevas tecnologías que aparecen, supone un costo a justificar monetariamente (sobre todo, en términos de hardware y rendimiento), por ello, hablar si el número de sitios basados en PHP se ha visto reducido progresivamente en los últimos años, con la aparición de nuevas tecnologías como Node.js, Golang, ASP.NET, etc., o no, supone abrir un debate no carente de falacias y argumentos demagógicos. Es un hecho constatado que, en el mundo empresarial, solo se cambian las cosas cuando va a suponer una ventaja estratégica en el mercado. Las empresas carecen de un sentido que les polaricen los 'sentimientos', emergiendo una pauta de posicionamiento mercantilista a favor o en contra de algo solo por un sentido despectivo hacia ciertas tecnologías, tal como sucede con el mundo linux, windows y/o mac en el ámbito de los usuarios.

Poderse hacer una visión general de como PHP está evolucionando a día de hoy, es hablar sobre las nuevas librerías disponibles, el uso de matrices, [14]​manejo de números enteros, tratamiento de la criptografía cuando se usa una Base64,[15][16][17]Web scraping, indexación de webs, precocinado de datos, Macrodatos, set de datos, supervisión de datos, set de proposiciones dimensionales. Como vemos, una visión general de este lenguaje, es mucho más compleja que afirmar que es un lenguaje para desarrollo web. Dicha realidad, subyace en la aparición de dominios xyz, cuya finalidad y especialidad es el cacheado de los servicios PHP para servir contenido con una orientación al desempeño vinculada a servicios para consumo de otros servicios que necesitan datos, tales como I.A.s. donde PHP está viendo una acogida con un sentimiento de confianza en los resultados a obtener (sin pretender servir de lenguaje en sí mismo orientado a la I.A., dado que no fue su conceptualización origen). Aunque el marketing que está recibiendo este tipo de dominios, está relacionado con las nuevas generaciones de personas educadas en las nuevas tecnologías [18]​ Como parte de la visión general, habría que incluir un último aspecto, y es la capacidad de generar capas de seguridad autodependientes, en un paradigma solo emergente gracias a las librerías de las que dispone PHP (En proceso de desarrollo).

El sitio web de Wikipedia está desarrollado en PHP.[19]​ Es también el módulo Apache más popular entre las computadoras que utilizan Apache como servidor web.

El gran parecido que posee PHP con los lenguajes más comunes de programación estructurada, como C y Perl, permiten a la mayoría de los programadores crear aplicaciones complejas con una curva de aprendizaje muy corta. También les permite involucrarse con aplicaciones de contenido dinámico sin tener que aprender todo un nuevo grupo de funciones.

Aunque todo en su diseño está orientado a facilitar la creación de sitios webs, es posible crear aplicaciones con una interfaz gráfica de usuario, utilizando alguna extensión como puede ser PHP-Qt, PHP-GTK,[20]​ WxPHP, WinBinder, Roadsend PHP, Phalanger, Phc o HiP Hop VM. También puede ser usado desde la línea de comandos, de la misma manera como Perl o Python pueden hacerlo; a esta versión de PHP se la llama PHP-CLI (Command Line Interface).[21]

Cuando el cliente hace una petición al servidor para que le envíe una página web, el servidor ejecuta el intérprete de PHP. Este procesa el script solicitado que generará el contenido de manera dinámica (por ejemplo obteniendo información de una base de datos). El resultado es enviado por el intérprete al servidor, quien a su vez se lo envía al cliente.

Mediante extensiones es también posible la generación de archivos PDF,[22]Flash, así como imágenes en diferentes formatos.

Permite la conexión a diferentes tipos de servidores de bases de datos tanto SQL como NoSQL tales como MySQL, PostgreSQL, Oracle, ODBC, DB2, Microsoft SQL Server, Firebird, SQLite o MongoDB.[23]

PHP también tiene la capacidad de ser ejecutado en la mayoría de los sistemas operativos, tales como Unix (y de ese tipo, como Linux o Mac OS X) y Microsoft Windows, y puede interactuar con los servidores de web más populares ya que existe en versión CGI, módulo para Apache, e ISAPI.

PHP es una alternativa a las tecnologías de Microsoft ASP y ASP.NET (que utiliza C# y Visual Basic .NET como lenguajes), a ColdFusion de la empresa Adobe, a JSP/Java, CGI/Perl y a Node.js/Javascript. Aunque su creación y desarrollo se da en el ámbito de los sistemas libres, bajo la licencia GNU, existe además un entorno de desarrollo integrado comercial llamado Zend Studio. CodeGear (la división de lenguajes de programación de Borland) ha sacado al mercado un entorno de desarrollo integrado para PHP, denominado 'Delphi for PHP. También existen al menos un par de módulos para Eclipse, uno de los entornos más populares.[24]

Historia

Fue originalmente diseñado en Perl, con base en la escritura de un grupo de CGI binarios escritos en el lenguaje C por el programador danés-canadiense Rasmus Lerdorf en el año 1994 para mostrar su currículum vítae y guardar ciertos datos, como la cantidad de tráfico que su página web recibía. El 8 de junio de 1995 fue publicado "Personal Home Page Tools" después de que Lerdorf lo combinara con su propio Form Interpreter para crear PHP/FI.

Dos programadores israelíes del Technion, Zeev Suraski y Andi Gutmans, reescribieron el analizador sintáctico (parser, en inglés) en 1997 y crearon la base del PHP3, y cambiaron el nombre del lenguaje por PHP: Hypertext Preprocessor.[25]​ Inmediatamente comenzaron experimentaciones públicas de PHP3, y se publicó oficialmente en junio de 1998. Para 1999, Suraski y Gutmans reescribieron el código de PHP, y produjeron lo que hoy se conoce como motor Zend. También fundaron Zend Technologies en Ramat Gan, Israel.[25]

En mayo del 2000, PHP 4 se lanzó bajo el poder del motor Zend 1.0. El 13 de julio de 2007 se anunció la suspensión del soporte y desarrollo de la versión 4 de PHP,[26]​ y, a pesar de lo anunciado, se ha liberado una nueva versión con mejoras de seguridad, la 4.4.8, publicada el 13 de enero del 2008, y posteriormente la versión 4.4.9, publicada el 7 de agosto del 2008.[27]​ Según esta noticia,[28]​ se le dio soporte a fallos críticos hasta el 9 de agosto del 2008.

El 13 de julio de 2004, se lanzó PHP 5, utilizando el motor Zend Engine 2.0 (o Zend Engine 2).[25]​ Incluye todas las ventajas que provee el nuevo Zend Engine 2, como:

Historial de lanzamiento

Significado
Rojo Versión antigua, sin soporte
Amarillo Con soporte para errores de seguridad
Verde Con soporte para errores generales y de seguridad
Azul Lanzamiento futuro
Rosa Lanzamiento cancelado
Versión Fecha de lanzamiento Fin de soporte Notas
1.0 08-06-1995 Llamada oficialmente "Personal Home Page Tools (PHP Tools)". Es la primera versión en usar el nombre "PHP".[29]
2.0 01-11-1997 Considerada por sus creadores la "herramienta más rápida y sencilla" para crear páginas web dinámicas.[29]
3.0 06-06-1998 20-10-2000 Zeev Suraski y Andi Gutmans reescribieron la base para esta versión.[29]
4.0 22-05-2000 23-01-2001 Se añadió un sistema de parsing de dos fases llamado motor Zend.[30]
4.1 10-12-2001 12-03-2002 Se introducen 'superglobales' ($_GET, $_POST, $_SESSION, etc.)[30]
4.2 22-04-2002 06-09-2002 Se deshabilitan register_globals por defecto. Datos recibidos por la red no son insertados en el espacio de nombres global, cerrando posibles agujeros de seguridad en las aplicaciones.[30]
4.3 27-12-2002 31-03-2005 Se introduce CLI, y CGI.[30][31]
4.4 11-07-2005 07-08-2008 Se añaden páginas man para phpize y php-config.[30]
5.0 13-07-2004 05-09-2005 Motor Zend II con un nuevo modelo de objetos.[32]
5.1 24-11-2005 24-08-2006 Mejoras de rendimiento con la introducción de variables de compilador para el nuevo motor de PHP.[32]
5.2 02-11-2006 06-01-2011 Actividad extensión de filtro por defecto. Soporte JSON nativo.[32]
5.3 30-06-2009 14-08-2014[33] Soporte para espacios de nombres, enlace estático en tiempo de ejecución, etiqueta de salto (GOTO limitada), Clausuras nativas, Soporte nativo para archivos PHP (phar), recolección de basura para referencias circulares, soporte mejorado para Windows, sqlite3, mysqlnd como reemplazo a libmysql como biblioteca para extensiones que funcionan con MySQL, fileinfo como reemplazado de mime_magic para mejor soporte MIME, extensión de Internacionalización, y etiqueta ereg obsoleta.
5.4 01-03-2012 15-09-2015 Soporte para Trait y sintaxis abreviada de array. Elementos eliminados: register_globals, safe_mode, allow_call_time_pass_reference, session_register(), session_unregister() y session_is_registered(). Servidor web incorporado.[34]​ Varias mejoras a características existentes y al rendimiento, y requerimientos de memoria menores.
5.5 20-06-2013 20-06-2016 Nuevos generadores para bucles, empty() soporta expresiones. Se pierde el soporte para Windows XP y Windows Server 2003.[35]
5.6 20-08-2014 31-12-2018 Constantes con expresiones escalares, listas de argumentos de longitud variable y exponencial mediante el operador **.[36]
6 El desarrollo de PHP 6 ha sido retrasado porque los desarrolladores decidieron que el enfoque actual para tratar cadenas Unicode no es correcto, y están considerando formas alternas para la siguiente versión.[37]​ Las mejoras planeadas para PHP 6 fueron añadidas en su lugar en PHP 5.3.0 (Soporte para espacios de nombre, enlace estático en tiempo de ejecución, funciones lambda, clausuras, goto) y 5.4.0 (traits, revinculación de clausura).

Se abandonó la versión 6 de PHP siendo la siguiente versión la 7.[38]

7.0 03-11-2015[39] 03-12-2018 Mejoras de rendimiento ,[40]​ declaración de tipos de retorno en funciones [41]
7.1 01-12-2016[42][43] 01-12-2019 //no es entendible Tipo de retorno vacío,[44]​ Clase constante modificadores de visibilidad,[45]​ Tipos nullable,[46]​ iterable de tipo seudo,[47]​ Captura múltiples tipos de excepciones.[48]
7.2 30-11-2017 30-11-2020 Nuevo tipo de retorno "object",[49]​ integración de Libsodium como una extensión del núcleo[50]
7.3 6-12-2018 6-12-2021
7.4 28-11-2019 28-11-2022
8.0 26-11-2020 26-11-2023
8.1 ??-11-2021 ??-11-2024

Sintaxis

La sintaxis de PHP, se fundamenta en los principios de programación de C.

El intérprete de PHP solo ejecuta el código que se encuentra entre sus delimitadores. Los delimitadores más comunes son <?php para abrir una sección PHP y ?> para cerrarla. El propósito de estos delimitadores es separar el código PHP del resto de código, como por ejemplo el HTML.[51]​ En los archivos que contienen solo código PHP, el delimitador ?> se puede omitir. De hecho, PHP-FIG a través de sus PHP Standard Recommendation (recomendaciones estándar para PHP) recomienda omitir el delimitador ?>, ya que así no se envía contenido HTML de manera accidental. Por ejemplo, si se envía un carácter "no PHP" (que no es procesado por el intérprete de PHP), no se podrán ejecutar ciertas acciones como enviar encabezados HTTP a través de la función header(), ya que el proceso de respuesta ya ha comenzado.

Las variables se prefijan con el símbolo del dólar ($) y no es necesario indicar su tipo. Las variables, a diferencia de las funciones, distinguen entre mayúsculas y minúsculas. Las cadenas de caracteres pueden ser encapsuladas tanto en dobles comillas como en comillas simples, aunque en el caso de las primeras, se pueden insertar variables en la cadena directamente, sin necesidad de concatenación.

Los comentarios se pueden escribir bien con dos barras al principio de la línea, o con una almohadilla. También permite comentarios multi-línea encapsulados en /* */.

En cuanto a las palabras clave, PHP comparte con la mayoría de otros lenguajes con sintaxis C las condiciones con if, los bucles con for y while y los retornos de funciones. Como es habitual en este tipo de lenguajes, las sentencias deben acabar con punto y coma (;).

Ejemplos de código en PHP Básico

Programa Hola mundo con PHP inmerso dentro de código HTML:

<!DOCTYPE html> <html lang="es" dir="ltr"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Ejemplo básico PHP</title> </head> <body> <?php  echo 'Hola mundo';   ?> </body> </html> 

Programa Hola mundo con PHP en forma de app monolítica:

<?php // Area de cabeceras, constantes e includes (inicialización de la aplicación) // Encabezado solo para demostración, no es necesario header('Content-Type: text/html; charset=UTF-8'); $respuesta = ''; // Lógica de la aplicación, como obtener usuario de la sesión, contenido, etc. // Este código podría venir de una plantilla externa para una fácil reutilización $respuesta .= '<!DOCTYPE html>'; $respuesta .= '<html lang="es">'; $respuesta .= ''; $respuesta .= '<head>'; $respuesta .= ' <meta charset="UTF-8" />'; $respuesta .= ' <meta name="viewport" content="width=device-width, initial-scale=1.0" />'; $respuesta .= ' <title>Ejemplo básico de PHP</title>'; $respuesta .= '</head>'; $respuesta .= ''; $respuesta .= '<body>'; $respuesta .= ' <h1>Hola mundo!</h1>'; $respuesta .= '</body>'; $respuesta .= ''; $respuesta .= '</html>'; // Envía respuesta echo $respuesta; // Notar que no se cierra la "etiqueta" <?php. PHP-FIG recomienda esta práctica en // archivos que contienen solo código PHP para así no enviar contenido HTML de // manera accidental. 

Programa Hola mundo con PHP respondiendo en formato JSON:

<?php // Archivo respuesta_json.php // Le comunica al navegador que la respuesta será JSON header('Content-Type: application/json; charset=UTF-8'); $respuesta = [ 'mensaje' => 'Hola mundo!' ]; echo json_encode($respuesta); // No se cierra la "etiqueta" <?php ya que el archivo contiene solo código PHP 

El lado del cliente que realizará petición al archivo PHP:

<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Ejemplo de respuesta en formato JSON desde PHP</title> </head> <body> <div> <h2>Respuesta en texto plano</h2> <pre><code id="respuesta-plana"></code></pre> </div> <div> <h2>Respuesta procesada (campo "mensaje" de la respuesta JSON)</h2> <pre><code id="respuesta-procesada"></code></pre> </div> <script> document.addEventListener('DOMContentLoaded', () => {  const contenedorRespuestaPlana = document.querySelector('#respuesta-plana');  const contenedorRespuestaProcesada = document.querySelector('#respuesta-procesada');  // Realiza petición asíncrona al archivo de php  fetch('respuesta_json.php')  .then(respuesta => respuesta.json()) // Transforma la respuesta a un objeto JSON  .then(respuestaJson => {  // respuestaJson es un objeto con el formato { mensaje: "Hola mundo!" }  contenedorRespuestaPlana.innerHTML = JSON.stringify(respuestaJson);  contenedorRespuestaProcesada.innerHTML = respuestaJson.mensaje;  });  // manejar errores con .catch() }); </script> </body> </html> 

Bases de datos (MySQL)

PHP puede combinarse con MySQL para trabajar con bases de datos, aunque también se pueden utilizar otros motores de base de datos como Microsoft SQL Server, PostgreSQL, MongoDB, entre otros.

En el siguiente ejemplo se muestra un simple inicio de sesión con usuario y contraseña utilizando MySQL y PHP con el estilo orientado a objetos:

<?php // Conexión a la base de datos local 'sitio'. Normalmente esto vendría de un // servicio externo que se reutiliza en todo el sitio. $conexion = new PDO('mysql:host=127.0.0.1;dbname=sitio', 'root', '', [ // Lanza excepción si ocurre un error, así el gestor de errores tomará las acciones necesarias // como mostrar un error 500 o terminar la ejecución del sistema. Nótese que no se utiliza // try-catch acá para delegarle la responsabilidad al gestor de errores. PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // Desactiva emulación de sentencias preparadas (solo las nativas son seguras) PDO::ATTR_EMULATE_PREPARES => false, ]); // Se obtienen los datos enviados por el formulario // Para la simplicidad de la demostración se utiliza el operador coalesce (??) $nombre_usuario = trim($_POST['nombre_usuario'] ?? ''); // Se eliminan los espacios al inicio y al final $contrasena = $_POST['contrasena'] ?? ''; // La contraseña se deja tal cual, sin trim() // Solo actuar si el formulario ha sido enviado con datos if (isset($_POST['enviar']) && !empty($nombre_usuario) && !empty($contrasena)) { // Consulta para buscar el usuario en la base de datos // Se utilizan sentencias preparadas para prevenir inyecciones SQL $consulta_usuario = $conexion->prepare('SELECT * FROM usuarios WHERE nombre_usuario = ? LIMIT 1'); $consulta_usuario->execute([$nombre_usuario]); // Verifica si se ha encontrado un usuario if ($consulta_usuario->rowCount() > 0) { // Obtiene los datos del usuario $usuario_encontrado = $consulta_usuario->fetch(PDO::FETCH_ASSOC); // Comprobar si la contraseña enviada es correcta // Utiliza algoritmos seguros como BCrypt o Argon2i if (password_verify($contrasena, $usuario_encontrado['contrasena'])) {  // Credenciales correctas, iniciar sesión } else {  // Credenciales incorrectas, mostrar mensaje de error } } else { // Nombre de usuario no existe, mostrar mensaje de error // Nótese que, por seguridad, aquí y arriba se debe mostrar un error // genérico como "Credenciales incorrectas", así de esta forma un posible // atacante no sabrá si ha ingresado el nombre de usuario correcto } } // No se cierra la "etiqueta" <?php ya que el archivo contiene solo código PHP 

El siguiente ejemplo hace lo mismo que el anterior, pero con la seguridad de, sea cual sea el estado medio del servicio, si no hay forma de conectar, destruida la clase se cierran los hilos.

  Bórrese

<?php //Archivo BD_access.class.php class interfazSesion { public $conexion; public $BD_ACCESS; public $HOST_ACCESS; public $USER_ACCESS; public $PWD_ACCESS; public $error; public function __construct(array $args) { $salida=''; try {  if ((null!==$args['BD_ACCESS']) && (null!==$args['HOST_ACCESS']) && (null !== $args['USER_ACCESS']) && (null !== $args['PWD_ACCESS'])){  //Construimos la clase  $this->BD_ACCESS = $args['BD_ACCESS'];  $this->HOST_ACCESS = $args['BD_ACCESS'];  $this->USER_ACCESS = $args['BD_ACCESS'];  $this->PWD_ACCESS = $args['BD_ACCESS'];  } else {  throw new Exception('Error de construccion del interfaz de conexion a datos: No se suministran todos los argumentos',400);  } } catch(Exception $e){  die('"{error":"'.$e->getMessage.'}"'); } finally{  // Conectar al servidor MySQL y seleccionar la base de datos con el nombre 'login'  $this->conexion = @new mysqli($this->HOST_ACCESS, $this->USER_ACCESS, $this->PWD_ACCESS, $this->BD_ACCESS); }  try{  if (!$this->conexion){  throw new Exception('Error de conexión a la base de datos: los argumentos introducidos no son suficientes para crear una conexión',410);  } } catch (Exception $e){  die('"{error":"'.$e->getMessage.'}"'); } finally{  $salida='{"Ok":"La conexión se ha realizado"}'; } $this->error=$salida; } public function consultaSQL(string $queSQLquery): string { $salida=''; // Consulta para buscar los usuarios en la base de datos $consulta_usuario = $this->conexion->query($queSQLquery);  // Verificar que se ha encontrado un usuario if ($consulta_usuario->num_rows > 0) {  // Obtener los datos del usuario en forma de un array asociativo  $usuario_encontrado = $consulta_usuario->fetch_assoc();  // Comprobar si la contraseña utilizada es la misma que la que está en la base de datos  if ($contrasena === $usuario_encontrado['contrasena']) {  // Texto de exito  $salida = '{"Ok":"Has iniciado la sesión correctamente"}';  } else {  // Texto de error  $salida = '{"error":"La contraseña utilizada no es correcta"}';  }  } else {  // Texto de error  $salida = '{"error":"El usuario introducido no existe"}';  }  // Cerrar la conexión $this->conexion->close(); return $salida; } } ?> <?php //Archivo cabecera.h.php // Solo mostrar errores fatales, de parseo y advertencias para el ejemplo error_reporting(E_ERROR | E_PARSE | E_WARNING); //Inclusion de clases para instancias de gestion $seHaIncluido=include_once(BD_access.class.php); if($seHaIncluido){ // Comprobar que el formulario fue enviado utilizando el boton enviar if (isset($_POST['enviar'])) { //Iniciando variables $usuario=''; $contrasena=''; // Obtener los datos enviados por método POST y borrar los espacios en blanco del inicio y del final $usuario = trim($_POST['usuario']); $contrasena = sha1(trim($_POST['contrasena'])); //Comprobacion de que las variables no están vacías if(!empty($usuario) && !empty($contrasena)){ $args = array('BD_ACCESS'=>'usuarios', 'HOST_ACCESS'=>'localhost','USER_ACCESS'=>'root','PWD_ACCESS'=>'sin_contrasenia'){ //Se instancian los objetos asociados a las clases correspondientes $misAccesos = new interfazSesion($args); $estadoConn = JSON.decode($misAccesos->error); if(isset($estadoConn['Ok'])){  $estadoQuery=$misAccesos->consultaSQL("SELECT * FROM usuarios WHERE usuario = '$usuario' LIMIT 1");  echo '{"salida":"'.$estadoQuery.'"}'; }else if(isset($estadoConn['error'])){  echo '{"error":"'.$estadoQuery.'"}'; } }else{ echo '{"error":"campos del formulario con datos no reconocidos"}'; } }else{ echo '{"error":"intento de acceso no permitido"}'; } } ?> 

Como servicio REST

Los servicios REST se fundamentan en tres conceptos fundamentales:

 Concepto de recurso Concepto de itinerancia Concepto de API 

Características de PHP

Características

  • Orientado al desarrollo de aplicaciones web dinámicas con acceso a información almacenada en una base de datos.
  • Es considerado un lenguaje fácil de aprender, ya que en su desarrollo se simplificaron distintas especificaciones, como es el caso de la definición de las variables primitivas, ejemplo que se hace evidente en el uso de php arrays.
  • El código fuente escrito en PHP es invisible al navegador web y al cliente, ya que es el servidor el que se encarga de ejecutar el código y enviar su resultado HTML al navegador.
  • Capacidad de conexión con la mayoría de los motores de base de datos que se utilizan en la actualidad, destaca su conectividad con MySQL y PostgreSQL.
  • Capacidad de expandir su potencial utilizando módulos (llamados extensiones).
  • Posee una amplia documentación en su sitio web oficial, entre la cual se destaca que todas las funciones del sistema están explicadas y ejemplificadas en un único archivo de ayuda.
  • Es libre, por lo que se presenta como una alternativa de fácil acceso para todos.
  • Permite aplicar técnicas de programación orientada a objetos.
  • No requiere definición de tipos de variables aunque sus variables se pueden evaluar también por el tipo que estén manejando en tiempo de ejecución.
  • Tiene manejo de excepciones (desde PHP5).
  • Si bien PHP no obliga a quien lo usa a seguir una determinada metodología a la hora de programar, aun haciéndolo, el programador puede aplicar en su trabajo cualquier técnica de programación o de desarrollo que le permita escribir código ordenado, estructurado y manejable. Un ejemplo de esto son los desarrollos que en PHP se han hecho del patrón de diseño Modelo Vista Controlador (MVC), que permiten separar el tratamiento y acceso a los datos, la lógica de control y la interfaz de usuario en tres componentes independientes.
  • Debido a su flexibilidad ha tenido una gran acogida como lenguaje base para las aplicaciones WEB de manejo de contenido, y es su uso principal.

Inconvenientes

  • Como es un lenguaje que se interpreta en ejecución, para ciertos usos puede resultar un inconveniente que el código fuente no pueda ser ocultado. La ofuscación es una técnica que puede dificultar la lectura del código pero no necesariamente impide que el código sea examinado.
  • Debido a que es un lenguaje interpretado, un script en PHP suele funcionar considerablemente más lento que su equivalente en un lenguaje de bajo nivel, sin embargo este inconveniente se puede minimizar con técnicas de caché tanto en archivos como en memoria.
  • En las versiones previas a la 7, las variables no son tipificadas, lo cual dificulta a los diferentes IDEs ofrecer asistencias para el tipificado del código, aunque esto no es realmente un inconveniente del lenguaje en sí. Esto es solventado por algunos IDEs añadiendo un comentario con el tipo a la declaración de la variable.

XAMPP, LAMP, WAMP, MAMP, UwAmp

 
La LAMP comprende PHP (aquí con Squid).

XAMPP es un servidor independiente de plataforma, software libre, que consiste principalmente en la base de datos MySQL, el servidor Web Apache y los intérpretes para lenguajes de script: PHP y Perl. El nombre proviene del acrónimo de X (para cualquiera de los diferentes sistemas operativos), Apache, MySQL, PHP, Perl. El programa está liberado bajo la licencia GNU y actúa como un servidor Web libre, fácil de usar y capaz de interpretar páginas dinámicas. Actualmente XAMPP está disponible para Microsoft Windows, GNU/Linux, Solaris, y MacOS X.

Es un software "liviano" que se puede utilizar en cualquier PC. No necesita muchos recursos.

LAMP presenta una funcionalidad parecida a XAMPP, pero enfocada en Linux, WAMP lo hace enfocado en Windows, y MAMP para MacOS X. UwAmp es muy idéntico a WAMP y se destaca en que se puede ejecutar desde una memoria USB.

Principales sitios desarrollados con PHP

Se utiliza PHP en millones de sitios; entre los más destacados se encuentran:

Véase también

Notas

  1. Un término formado por la letra inicial de una o varias palabras o parte de palabras, pero que se pronuncia letra por letra, a diferencia del acrónimo.[5]

Referencias

  1. https://www.php.net/index.php#id2021-04-29-2
  2. «PHP: Hypertext Preprocessor». www.php.net. Consultado el 4 de junio de 2020. 
  3. «PHP: History of PHP - Manual». www.php.net. Consultado el 4 de junio de 2020. 
  4. «PHP: Historia de PHP y Proyectos Relacionados - Manual». www.php.net. Consultado el 4 de junio de 2020. 
  5. «inicialismo». Consultado el 3 de junio de 2020. 
  6. «PHP: Preface - Manual». www.php.net. Consultado el 4 de junio de 2020. 
  7. «PHP: What can PHP do? - Manual». www.php.net. Consultado el 4 de junio de 2020. 
  8. jolicode/php-ar-drone, JoliCode, 21 de mayo de 2020, consultado el 4 de junio de 2020 .
  9. Jackson, Joab (31 de julio de 2014). «PHP gets a formal specification, at last». ITworld (en inglés). Consultado el 4 de junio de 2020. 
  10. «PHP: Supported Versions». www.php.net. Consultado el 4 de junio de 2020. «End of life: Una liberación que ya no tiene soporte. Los usuarios de esta versión deben actualizarse lo antes posible, ya que pueden estar expuestos a vulnerabilidades de seguridad sin parches». 
  11. «Usage Statistics and Market Share of PHP for Websites, June 2020». w3techs.com. Consultado el 4 de junio de 2020. 
  12. «PHP: Unsupported Branches». www.php.net. Consultado el 4 de junio de 2020. 
  13. «LTS/Jessie - Debian Wiki». wiki.debian.org. Consultado el 4 de junio de 2020. 
  14. ["https://wiki.php.net/rfc/object-typehint" «"PHP 7 introduced scalar types for parameters and also for declaring return types for functions."»] (en inglés). "https://wiki.php.net/rfc/object-typehint#introduction". Consultado el 7 de julio de 2019. 
  15. «NaCl: Networking and Cryptography library» (en inglés). https://www.php.net/manual/es/book.sodium.php. Consultado el 7 de julio de 2019. 
  16. «NaCl library for encryption, decryption, signatures, password hashing and more. url=https://download.libsodium.org/doc/» (en inglés). https://download.libsodium.org/doc/#offline-documentation. 
  17. «Sodium is a modern, easy-to-use software library.». https://www.php.net/docs.php. Consultado el 7 de julio de 2019. 
  18. «nuevas generaciones» (en inglés). www.google.com. Consultado el 8 de febrero de 2018. 
  19. «Historical trends in the usage of server-side programming languages for websites» (en inglés). W3Techs. Consultado el 10 de septiembre de 2013. 
  20. «PHP-GTK» (en inglés). PHP Group. Consultado el 10 de septiembre de 2013. 
  21. «PHP: Funcionamiento en línea de comandos». PHP Group. Consultado el 10 de septiembre de 2013. 
  22. «dompdf - HTML to PDF converter (PHP5)» (en inglés). Consultado el 10 de septiembre de 2013. 
  23. «PHP: Extensiones de bases de datos - Manual». PHP Group. Consultado el 10 de septiembre de 2013. 
  24. Existen tanto PHPEclipse como PDT for Eclipse. Véanse http://www.phpeclipse.com el 18 de marzo de 2009 en Wayback Machine. y http://www.eclipse.org/pdt
  25. Error en la cita: Etiqueta <ref> no válida; no se ha definido el contenido de las referencias llamadas historia
  26. PHP: News Archives 2007 (en inglés). Consultado 9 de diciembre de 2007.
  27. PHP: News Archives 2008 (en inglés).
  28. Archivo: 13 de julio de 2007 PHP.net.
  29. «History of PHP and related projects». The PHP Group. Consultado el 25 de febrero de 2008. 
  30. «PHP: PHP 4 ChangeLog». The PHP Group. 3 de enero de 2008. Consultado el 22 de febrero de 2008. 
  31. «PHP: Using PHP from the command line - Manual:». The PHP Group. Consultado el 11 de septiembre de 2009. 
  32. «PHP: PHP 5 ChangeLog». The PHP Group. 8 de noviembre de 2007. Consultado el 22 de febrero de 2008. 
  33. «Last 5.3 release ever available: PHP 5.3.29 - 5.3 now EOL». PHP. Consultado el 20 de septiembre de 2013. 
  34. «Built-in web server». Consultado el 26 de marzo de 2012. 
  35. «What has changed in PHP 5.5.x». Consultado el 13 de abril de 2013. 
  36. . Archivado desde el original el 25 de abril de 2015. Consultado el 20 de septiembre de 2014. 
  37. «PHP 6: Features, Release Date, Hosting and Download». Consultado el 6 de mayo de 2011. 
  38. «Nombre de la próxima versión de PHP». Consultado el 24 de julio de 2014. 
  39. «RFC: PHP 7.0 Timeline». 4 de noviembre de 2015. Consultado el 4 de noviembre de 2015. 
  40. «Benchmarking PHPNG!». 
  41. «PHP RFC: Return Type Declarations». 
  42. «Preparation Tasks». Consultado el 5 de julio de 2016. 
  43. «PHP 7.1.0 GA - Externals». externals.io. Consultado el 30 de noviembre de 2016. 
  44. «PHP: rfc:void_return_type». php.net. 9 de noviembre de 2015. Consultado el 14 de noviembre de 2015. 
  45. «PHP: rfc:class_constant_visibility». php.net. 27 de octubre de 2015. Consultado el 8 de diciembre de 2015. 
  46. «PHP RFC: Nullable Types». php.net. 10 de abril de 2014. Consultado el 14 de junio de 2016. 
  47. «PHP RFC: Iterable». php.net. 10 de junio de 2016. Consultado el 19 de febrero de 2017. 
  48. «PHP RFC: Catching Multiple Exception Types». php.net. 6 de marzo de 2016. Consultado el 19 de febrero de 2017. 
  49. «PHP: rfc:object-typehint». wiki.php.net. Consultado el 20 de diciembre de 2017. 
  50. «PHP: rfc:libsodium». wiki.php.net. Consultado el 20 de diciembre de 2017. 
  51. «PHP: Sintaxis básica». Consultado el 13 de abril de 2013. 

Enlaces externos

  •   Wikilibros alberga un libro o manual sobre Programación en PHP.
  • Página web oficial
  • Manuales y librerías en PHP.
  • PHP-by-Example Probar las funciones de PHP en línea (+500).
  • Tutorial extensivo de PHP y MySQL (en inglés).
  •   Datos: Q59
  •   Multimedia: PHP
  •   Libros y manuales: Programación en PHP
  •   Recursos didácticos: Curso de PHP

para, otros, usos, este, término, véase, desambiguación, lenguaje, programación, general, adapta, especialmente, desarrollo, creado, inicialmente, programador, danés, canadiense, rasmus, lerdorf, 1994, actualidad, implementación, referencia, producida, group, . Para otros usos de este termino vease PHP desambiguacion PHP es un lenguaje de programacion de uso general que se adapta especialmente al desarrollo web 2 Fue creado inicialmente por el programador danes canadiense Rasmus Lerdorf en 1994 3 En la actualidad la implementacion de referencia de PHP es producida por The PHP Group 4 PHP originalmente significaba Personal Home Page Pagina personal pero ahora significa el inicialismo n 1 recursivo PHP Hypertext Preprocessor 6 PHPDesarrollador es PHP Grouphttps www php netInformacion generalExtensiones comunes php phtml php3 php4 php5 php7 phps php s pht pharParadigmaMultiparadigma imperativo funcional orientado a objetos procedural reflexivoAparecio en1995Disenado porRasmus LerdorfUltima version estable8 0 8 1 1 de julio de 2021 1 mes y 15 dias Sistema de tiposDinamico debilImplementacionesMotor Zend HHVM Phalanger Quercus Project Zero ParrotInfluido porPerl C C Java TclHa influido aFalcon HackSistema operativoUnix like WindowsLicenciaLicencia PHP editar datos en Wikidata El codigo PHP suele ser procesado en un servidor web por un interprete PHP implementado como un modulo un daemon o como un ejecutable de interfaz de entrada comun CGI En un servidor web el resultado del codigo PHP interpretado y ejecutado que puede ser cualquier tipo de datos como el HTML generado o datos de imagenes binarias formaria la totalidad o parte de una respuesta HTTP Existen diversos sistemas de plantillas sistemas de gestion de contenidos y frameworks que pueden emplearse para organizar o facilitar la generacion de esa respuesta Por otra parte PHP puede utilizarse para muchas tareas de programacion fuera del contexto de la web como aplicaciones graficas autonomas 7 y el control de drones 8 Tambien se puede interpretar y ejecutar un codigo PHP cualquiera a traves de una interfaz de linea de comandos CLI El interprete estandar de PHP impulsado por Motor Zend es un software libre publicado bajo Licencia PHP PHP ha sido ampliamente portado y puede ser desplegado en la mayoria de los servidores web en casi todos los sistemas operativos y plataformas de forma gratuita El lenguaje PHP evoluciono sin una especificacion formal escrita o un estandar hasta 2014 con la implementacion original actuando como el estandar de facto que otras implementaciones intentaban seguir Desde 2014 se ha trabajado para crear una especificacion formal de PHP 9 Para abril de 2020 mas de la mitad de los sitios en la web que usan PHP siguen en la version descontinuada 10 5 6 o anterior 11 y con la version 7 0 y 7 1 mas del 68 que no estan oficialmente soportadas por The PHP Development Team 12 mientras que el soporte de seguridad es proporcionado por terceros como Debian hasta junio de 2020 para PHP 5 13 Adicionalmente la version 7 2 la version con soporte mas popular dejara de recibir actualizaciones de seguridad el 30 de noviembre de 2020 10 Indice 1 Vision general 2 Historia 2 1 Historial de lanzamiento 3 Sintaxis 3 1 Ejemplos de codigo en PHP Basico 3 2 Bases de datos MySQL 3 3 Como servicio REST 4 Caracteristicas de PHP 4 1 Caracteristicas 4 2 Inconvenientes 4 3 XAMPP LAMP WAMP MAMP UwAmp 4 4 Principales sitios desarrollados con PHP 5 Vease tambien 6 Notas 7 Referencias 8 Enlaces externosVision general EditarPHP puede ser desplegado en la mayoria de los servidores web y en todos los sistemas operativos y plataformas sin costo alguno El lenguaje PHP se encuentra instalado en mas de 20 millones de sitios web y en un millon de servidores Migrar los servicios basados en PHP hacia las nuevas tecnologias que aparecen supone un costo a justificar monetariamente sobre todo en terminos de hardware y rendimiento por ello hablar si el numero de sitios basados en PHP se ha visto reducido progresivamente en los ultimos anos con la aparicion de nuevas tecnologias como Node js Golang ASP NET etc o no supone abrir un debate no carente de falacias y argumentos demagogicos Es un hecho constatado que en el mundo empresarial solo se cambian las cosas cuando va a suponer una ventaja estrategica en el mercado Las empresas carecen de un sentido que les polaricen los sentimientos emergiendo una pauta de posicionamiento mercantilista a favor o en contra de algo solo por un sentido despectivo hacia ciertas tecnologias tal como sucede con el mundo linux windows y o mac en el ambito de los usuarios Poderse hacer una vision general de como PHP esta evolucionando a dia de hoy es hablar sobre las nuevas librerias disponibles el uso de matrices 14 manejo de numeros enteros tratamiento de la criptografia cuando se usa una Base64 15 16 17 Web scraping indexacion de webs precocinado de datos Macrodatos set de datos supervision de datos set de proposiciones dimensionales Como vemos una vision general de este lenguaje es mucho mas compleja que afirmar que es un lenguaje para desarrollo web Dicha realidad subyace en la aparicion de dominios xyz cuya finalidad y especialidad es el cacheado de los servicios PHP para servir contenido con una orientacion al desempeno vinculada a servicios para consumo de otros servicios que necesitan datos tales como I A s donde PHP esta viendo una acogida con un sentimiento de confianza en los resultados a obtener sin pretender servir de lenguaje en si mismo orientado a la I A dado que no fue su conceptualizacion origen Aunque el marketing que esta recibiendo este tipo de dominios esta relacionado con las nuevas generaciones de personas educadas en las nuevas tecnologias 18 Como parte de la vision general habria que incluir un ultimo aspecto y es la capacidad de generar capas de seguridad autodependientes en un paradigma solo emergente gracias a las librerias de las que dispone PHP En proceso de desarrollo El sitio web de Wikipedia esta desarrollado en PHP 19 Es tambien el modulo Apache mas popular entre las computadoras que utilizan Apache como servidor web El gran parecido que posee PHP con los lenguajes mas comunes de programacion estructurada como C y Perl permiten a la mayoria de los programadores crear aplicaciones complejas con una curva de aprendizaje muy corta Tambien les permite involucrarse con aplicaciones de contenido dinamico sin tener que aprender todo un nuevo grupo de funciones Aunque todo en su diseno esta orientado a facilitar la creacion de sitios webs es posible crear aplicaciones con una interfaz grafica de usuario utilizando alguna extension como puede ser PHP Qt PHP GTK 20 WxPHP WinBinder Roadsend PHP Phalanger Phc o HiP Hop VM Tambien puede ser usado desde la linea de comandos de la misma manera como Perl o Python pueden hacerlo a esta version de PHP se la llama PHP CLI Command Line Interface 21 Cuando el cliente hace una peticion al servidor para que le envie una pagina web el servidor ejecuta el interprete de PHP Este procesa el script solicitado que generara el contenido de manera dinamica por ejemplo obteniendo informacion de una base de datos El resultado es enviado por el interprete al servidor quien a su vez se lo envia al cliente Mediante extensiones es tambien posible la generacion de archivos PDF 22 Flash asi como imagenes en diferentes formatos Permite la conexion a diferentes tipos de servidores de bases de datos tanto SQL como NoSQL tales como MySQL PostgreSQL Oracle ODBC DB2 Microsoft SQL Server Firebird SQLite o MongoDB 23 PHP tambien tiene la capacidad de ser ejecutado en la mayoria de los sistemas operativos tales como Unix y de ese tipo como Linux o Mac OS X y Microsoft Windows y puede interactuar con los servidores de web mas populares ya que existe en version CGI modulo para Apache e ISAPI PHP es una alternativa a las tecnologias de Microsoft ASP y ASP NET que utiliza C y Visual Basic NET como lenguajes a ColdFusion de la empresa Adobe a JSP Java CGI Perl y a Node js Javascript Aunque su creacion y desarrollo se da en el ambito de los sistemas libres bajo la licencia GNU existe ademas un entorno de desarrollo integrado comercial llamado Zend Studio CodeGear la division de lenguajes de programacion de Borland ha sacado al mercado un entorno de desarrollo integrado para PHP denominado Delphi for PHP Tambien existen al menos un par de modulos para Eclipse uno de los entornos mas populares 24 Historia EditarFue originalmente disenado en Perl con base en la escritura de un grupo de CGI binarios escritos en el lenguaje C por el programador danes canadiense Rasmus Lerdorf en el ano 1994 para mostrar su curriculum vitae y guardar ciertos datos como la cantidad de trafico que su pagina web recibia El 8 de junio de 1995 fue publicado Personal Home Page Tools despues de que Lerdorf lo combinara con su propio Form Interpreter para crear PHP FI Dos programadores israelies del Technion Zeev Suraski y Andi Gutmans reescribieron el analizador sintactico parser en ingles en 1997 y crearon la base del PHP3 y cambiaron el nombre del lenguaje por PHP Hypertext Preprocessor 25 Inmediatamente comenzaron experimentaciones publicas de PHP3 y se publico oficialmente en junio de 1998 Para 1999 Suraski y Gutmans reescribieron el codigo de PHP y produjeron lo que hoy se conoce como motor Zend Tambien fundaron Zend Technologies en Ramat Gan Israel 25 En mayo del 2000 PHP 4 se lanzo bajo el poder del motor Zend 1 0 El 13 de julio de 2007 se anuncio la suspension del soporte y desarrollo de la version 4 de PHP 26 y a pesar de lo anunciado se ha liberado una nueva version con mejoras de seguridad la 4 4 8 publicada el 13 de enero del 2008 y posteriormente la version 4 4 9 publicada el 7 de agosto del 2008 27 Segun esta noticia 28 se le dio soporte a fallos criticos hasta el 9 de agosto del 2008 El 13 de julio de 2004 se lanzo PHP 5 utilizando el motor Zend Engine 2 0 o Zend Engine 2 25 Incluye todas las ventajas que provee el nuevo Zend Engine 2 como Mejor soporte para la programacion orientada a objetos que en versiones anteriores era extremadamente rudimentario Mejoras de rendimiento Mejor soporte para MySQL con extension completamente reescrita Mejor soporte a XML XPath DOM etc Soporte nativo para SQLite Soporte integrado para SOAP Iteradores de datos Manejo de excepciones Mejoras con la implementacion con OracleHistorial de lanzamiento Editar SignificadoRojo Version antigua sin soporteAmarillo Con soporte para errores de seguridadVerde Con soporte para errores generales y de seguridadAzul Lanzamiento futuroRosa Lanzamiento canceladoVersion Fecha de lanzamiento Fin de soporte Notas1 0 08 06 1995 Llamada oficialmente Personal Home Page Tools PHP Tools Es la primera version en usar el nombre PHP 29 2 0 01 11 1997 Considerada por sus creadores la herramienta mas rapida y sencilla para crear paginas web dinamicas 29 3 0 06 06 1998 20 10 2000 Zeev Suraski y Andi Gutmans reescribieron la base para esta version 29 4 0 22 05 2000 23 01 2001 Se anadio un sistema de parsing de dos fases llamado motor Zend 30 4 1 10 12 2001 12 03 2002 Se introducen superglobales GET POST SESSION etc 30 4 2 22 04 2002 06 09 2002 Se deshabilitan register globals por defecto Datos recibidos por la red no son insertados en el espacio de nombres global cerrando posibles agujeros de seguridad en las aplicaciones 30 4 3 27 12 2002 31 03 2005 Se introduce CLI y CGI 30 31 4 4 11 07 2005 07 08 2008 Se anaden paginas man para phpize y php config 30 5 0 13 07 2004 05 09 2005 Motor Zend II con un nuevo modelo de objetos 32 5 1 24 11 2005 24 08 2006 Mejoras de rendimiento con la introduccion de variables de compilador para el nuevo motor de PHP 32 5 2 02 11 2006 06 01 2011 Actividad extension de filtro por defecto Soporte JSON nativo 32 5 3 30 06 2009 14 08 2014 33 Soporte para espacios de nombres enlace estatico en tiempo de ejecucion etiqueta de salto GOTO limitada Clausuras nativas Soporte nativo para archivos PHP phar recoleccion de basura para referencias circulares soporte mejorado para Windows sqlite3 mysqlnd como reemplazo a libmysql como biblioteca para extensiones que funcionan con MySQL fileinfo como reemplazado de mime magic para mejor soporte MIME extension de Internacionalizacion y etiqueta ereg obsoleta 5 4 01 03 2012 15 09 2015 Soporte para Trait y sintaxis abreviada de array Elementos eliminados register globals safe mode allow call time pass reference session register session unregister y session is registered Servidor web incorporado 34 Varias mejoras a caracteristicas existentes y al rendimiento y requerimientos de memoria menores 5 5 20 06 2013 20 06 2016 Nuevos generadores para bucles empty soporta expresiones Se pierde el soporte para Windows XP y Windows Server 2003 35 5 6 20 08 2014 31 12 2018 Constantes con expresiones escalares listas de argumentos de longitud variable y exponencial mediante el operador 36 6 El desarrollo de PHP 6 ha sido retrasado porque los desarrolladores decidieron que el enfoque actual para tratar cadenas Unicode no es correcto y estan considerando formas alternas para la siguiente version 37 Las mejoras planeadas para PHP 6 fueron anadidas en su lugar en PHP 5 3 0 Soporte para espacios de nombre enlace estatico en tiempo de ejecucion funciones lambda clausuras goto y 5 4 0 traits revinculacion de clausura Se abandono la version 6 de PHP siendo la siguiente version la 7 38 7 0 03 11 2015 39 03 12 2018 Mejoras de rendimiento 40 declaracion de tipos de retorno en funciones 41 7 1 01 12 2016 42 43 01 12 2019 no es entendible Tipo de retorno vacio 44 Clase constante modificadores de visibilidad 45 Tipos nullable 46 iterable de tipo seudo 47 Captura multiples tipos de excepciones 48 7 2 30 11 2017 30 11 2020 Nuevo tipo de retorno object 49 integracion de Libsodium como una extension del nucleo 50 7 3 6 12 2018 6 12 20217 4 28 11 2019 28 11 20228 0 26 11 2020 26 11 20238 1 11 2021 11 2024Sintaxis EditarLa sintaxis de PHP se fundamenta en los principios de programacion de C El interprete de PHP solo ejecuta el codigo que se encuentra entre sus delimitadores Los delimitadores mas comunes son lt php para abrir una seccion PHP y gt para cerrarla El proposito de estos delimitadores es separar el codigo PHP del resto de codigo como por ejemplo el HTML 51 En los archivos que contienen solo codigo PHP el delimitador gt se puede omitir De hecho PHP FIG a traves de sus PHP Standard Recommendation recomendaciones estandar para PHP recomienda omitir el delimitador gt ya que asi no se envia contenido HTML de manera accidental Por ejemplo si se envia un caracter no PHP que no es procesado por el interprete de PHP no se podran ejecutar ciertas acciones como enviar encabezados HTTP a traves de la funcion header ya que el proceso de respuesta ya ha comenzado Las variables se prefijan con el simbolo del dolar y no es necesario indicar su tipo Las variables a diferencia de las funciones distinguen entre mayusculas y minusculas Las cadenas de caracteres pueden ser encapsuladas tanto en dobles comillas como en comillas simples aunque en el caso de las primeras se pueden insertar variables en la cadena directamente sin necesidad de concatenacion Los comentarios se pueden escribir bien con dos barras al principio de la linea o con una almohadilla Tambien permite comentarios multi linea encapsulados en En cuanto a las palabras clave PHP comparte con la mayoria de otros lenguajes con sintaxis C las condiciones con i if i los bucles con i for i y i while i y los retornos de funciones Como es habitual en este tipo de lenguajes las sentencias deben acabar con punto y coma Ejemplos de codigo en PHP Basico Editar Programa Hola mundo con PHP inmerso dentro de codigo HTML lt DOCTYPE html gt lt html lang es dir ltr gt lt head gt lt meta charset UTF 8 gt lt meta name viewport content width device width initial scale 1 0 gt lt title gt Ejemplo basico PHP lt title gt lt head gt lt body gt lt php echo Hola mundo gt lt body gt lt html gt Programa Hola mundo con PHP en forma de app monolitica lt php Area de cabeceras constantes e includes inicializacion de la aplicacion Encabezado solo para demostracion no es necesario header Content Type text html charset UTF 8 respuesta Logica de la aplicacion como obtener usuario de la sesion contenido etc Este codigo podria venir de una plantilla externa para una facil reutilizacion respuesta lt DOCTYPE html gt respuesta lt html lang es gt respuesta respuesta lt head gt respuesta lt meta charset UTF 8 gt respuesta lt meta name viewport content width device width initial scale 1 0 gt respuesta lt title gt Ejemplo basico de PHP lt title gt respuesta lt head gt respuesta respuesta lt body gt respuesta lt h1 gt Hola mundo lt h1 gt respuesta lt body gt respuesta respuesta lt html gt Envia respuesta echo respuesta Notar que no se cierra la etiqueta lt php PHP FIG recomienda esta practica en archivos que contienen solo codigo PHP para asi no enviar contenido HTML de manera accidental Programa Hola mundo con PHP respondiendo en formato JSON lt php Archivo respuesta json php Le comunica al navegador que la respuesta sera JSON header Content Type application json charset UTF 8 respuesta mensaje gt Hola mundo echo json encode respuesta No se cierra la etiqueta lt php ya que el archivo contiene solo codigo PHP El lado del cliente que realizara peticion al archivo PHP lt DOCTYPE html gt lt html lang es gt lt head gt lt meta charset UTF 8 gt lt meta name viewport content width device width initial scale 1 0 gt lt title gt Ejemplo de respuesta en formato JSON desde PHP lt title gt lt head gt lt body gt lt div gt lt h2 gt Respuesta en texto plano lt h2 gt lt pre gt lt code id respuesta plana gt lt code gt lt pre gt lt div gt lt div gt lt h2 gt Respuesta procesada campo mensaje de la respuesta JSON lt h2 gt lt pre gt lt code id respuesta procesada gt lt code gt lt pre gt lt div gt lt script gt document addEventListener DOMContentLoaded gt const contenedorRespuestaPlana document querySelector respuesta plana const contenedorRespuestaProcesada document querySelector respuesta procesada Realiza peticion asincrona al archivo de php fetch respuesta json php then respuesta gt respuesta json Transforma la respuesta a un objeto JSON then respuestaJson gt respuestaJson es un objeto con el formato mensaje Hola mundo contenedorRespuestaPlana innerHTML JSON stringify respuestaJson contenedorRespuestaProcesada innerHTML respuestaJson mensaje manejar errores con catch lt script gt lt body gt lt html gt Bases de datos MySQL Editar PHP puede combinarse con MySQL para trabajar con bases de datos aunque tambien se pueden utilizar otros motores de base de datos como Microsoft SQL Server PostgreSQL MongoDB entre otros En el siguiente ejemplo se muestra un simple inicio de sesion con usuario y contrasena utilizando MySQL y PHP con el estilo orientado a objetos lt php Conexion a la base de datos local sitio Normalmente esto vendria de un servicio externo que se reutiliza en todo el sitio conexion new PDO mysql host 127 0 0 1 dbname sitio root Lanza excepcion si ocurre un error asi el gestor de errores tomara las acciones necesarias como mostrar un error 500 o terminar la ejecucion del sistema Notese que no se utiliza try catch aca para delegarle la responsabilidad al gestor de errores PDO ATTR ERRMODE gt PDO ERRMODE EXCEPTION Desactiva emulacion de sentencias preparadas solo las nativas son seguras PDO ATTR EMULATE PREPARES gt false Se obtienen los datos enviados por el formulario Para la simplicidad de la demostracion se utiliza el operador coalesce nombre usuario trim POST nombre usuario Se eliminan los espacios al inicio y al final contrasena POST contrasena La contrasena se deja tal cual sin trim Solo actuar si el formulario ha sido enviado con datos if isset POST enviar amp amp empty nombre usuario amp amp empty contrasena Consulta para buscar el usuario en la base de datos Se utilizan sentencias preparadas para prevenir inyecciones SQL consulta usuario conexion gt prepare SELECT FROM usuarios WHERE nombre usuario LIMIT 1 consulta usuario gt execute nombre usuario Verifica si se ha encontrado un usuario if consulta usuario gt rowCount gt 0 Obtiene los datos del usuario usuario encontrado consulta usuario gt fetch PDO FETCH ASSOC Comprobar si la contrasena enviada es correcta Utiliza algoritmos seguros como BCrypt o Argon2i if password verify contrasena usuario encontrado contrasena Credenciales correctas iniciar sesion else Credenciales incorrectas mostrar mensaje de error else Nombre de usuario no existe mostrar mensaje de error Notese que por seguridad aqui y arriba se debe mostrar un error generico como Credenciales incorrectas asi de esta forma un posible atacante no sabra si ha ingresado el nombre de usuario correcto No se cierra la etiqueta lt php ya que el archivo contiene solo codigo PHP El siguiente ejemplo hace lo mismo que el anterior pero con la seguridad de sea cual sea el estado medio del servicio si no hay forma de conectar destruida la clase se cierran los hilos Borrese lt php Archivo BD access class php class interfazSesion public conexion public BD ACCESS public HOST ACCESS public USER ACCESS public PWD ACCESS public error public function construct array args salida try if null args BD ACCESS amp amp null args HOST ACCESS amp amp null args USER ACCESS amp amp null args PWD ACCESS Construimos la clase this gt BD ACCESS args BD ACCESS this gt HOST ACCESS args BD ACCESS this gt USER ACCESS args BD ACCESS this gt PWD ACCESS args BD ACCESS else throw new Exception Error de construccion del interfaz de conexion a datos No se suministran todos los argumentos 400 catch Exception e die error e gt getMessage finally Conectar al servidor MySQL y seleccionar la base de datos con el nombre login this gt conexion new mysqli this gt HOST ACCESS this gt USER ACCESS this gt PWD ACCESS this gt BD ACCESS try if this gt conexion throw new Exception Error de conexion a la base de datos los argumentos introducidos no son suficientes para crear una conexion 410 catch Exception e die error e gt getMessage finally salida Ok La conexion se ha realizado this gt error salida public function consultaSQL string queSQLquery string salida Consulta para buscar los usuarios en la base de datos consulta usuario this gt conexion gt query queSQLquery Verificar que se ha encontrado un usuario if consulta usuario gt num rows gt 0 Obtener los datos del usuario en forma de un array asociativo usuario encontrado consulta usuario gt fetch assoc Comprobar si la contrasena utilizada es la misma que la que esta en la base de datos if contrasena usuario encontrado contrasena Texto de exito salida Ok Has iniciado la sesion correctamente else Texto de error salida error La contrasena utilizada no es correcta else Texto de error salida error El usuario introducido no existe Cerrar la conexion this gt conexion gt close return salida gt lt php Archivo cabecera h php Solo mostrar errores fatales de parseo y advertencias para el ejemplo error reporting E ERROR E PARSE E WARNING Inclusion de clases para instancias de gestion seHaIncluido include once BD access class php if seHaIncluido Comprobar que el formulario fue enviado utilizando el boton enviar if isset POST enviar Iniciando variables usuario contrasena Obtener los datos enviados por metodo POST y borrar los espacios en blanco del inicio y del final usuario trim POST usuario contrasena sha1 trim POST contrasena Comprobacion de que las variables no estan vacias if empty usuario amp amp empty contrasena args array BD ACCESS gt usuarios HOST ACCESS gt localhost USER ACCESS gt root PWD ACCESS gt sin contrasenia Se instancian los objetos asociados a las clases correspondientes misAccesos new interfazSesion args estadoConn JSON decode misAccesos gt error if isset estadoConn Ok estadoQuery misAccesos gt consultaSQL SELECT FROM usuarios WHERE usuario usuario LIMIT 1 echo salida estadoQuery else if isset estadoConn error echo error estadoQuery else echo error campos del formulario con datos no reconocidos else echo error intento de acceso no permitido gt Como servicio REST Editar Los servicios REST se fundamentan en tres conceptos fundamentales Concepto de recurso Concepto de itinerancia Concepto de APICaracteristicas de PHP EditarCaracteristicas Editar Orientado al desarrollo de aplicaciones web dinamicas con acceso a informacion almacenada en una base de datos Es considerado un lenguaje facil de aprender ya que en su desarrollo se simplificaron distintas especificaciones como es el caso de la definicion de las variables primitivas ejemplo que se hace evidente en el uso de php arrays El codigo fuente escrito en PHP es invisible al navegador web y al cliente ya que es el servidor el que se encarga de ejecutar el codigo y enviar su resultado HTML al navegador Capacidad de conexion con la mayoria de los motores de base de datos que se utilizan en la actualidad destaca su conectividad con MySQL y PostgreSQL Capacidad de expandir su potencial utilizando modulos llamados extensiones Posee una amplia documentacion en su sitio web oficial entre la cual se destaca que todas las funciones del sistema estan explicadas y ejemplificadas en un unico archivo de ayuda Es libre por lo que se presenta como una alternativa de facil acceso para todos Permite aplicar tecnicas de programacion orientada a objetos No requiere definicion de tipos de variables aunque sus variables se pueden evaluar tambien por el tipo que esten manejando en tiempo de ejecucion Tiene manejo de excepciones desde PHP5 Si bien PHP no obliga a quien lo usa a seguir una determinada metodologia a la hora de programar aun haciendolo el programador puede aplicar en su trabajo cualquier tecnica de programacion o de desarrollo que le permita escribir codigo ordenado estructurado y manejable Un ejemplo de esto son los desarrollos que en PHP se han hecho del patron de diseno Modelo Vista Controlador MVC que permiten separar el tratamiento y acceso a los datos la logica de control y la interfaz de usuario en tres componentes independientes Debido a su flexibilidad ha tenido una gran acogida como lenguaje base para las aplicaciones WEB de manejo de contenido y es su uso principal Inconvenientes Editar Como es un lenguaje que se interpreta en ejecucion para ciertos usos puede resultar un inconveniente que el codigo fuente no pueda ser ocultado La ofuscacion es una tecnica que puede dificultar la lectura del codigo pero no necesariamente impide que el codigo sea examinado Debido a que es un lenguaje interpretado un script en PHP suele funcionar considerablemente mas lento que su equivalente en un lenguaje de bajo nivel sin embargo este inconveniente se puede minimizar con tecnicas de cache tanto en archivos como en memoria En las versiones previas a la 7 las variables no son tipificadas lo cual dificulta a los diferentes IDEs ofrecer asistencias para el tipificado del codigo aunque esto no es realmente un inconveniente del lenguaje en si Esto es solventado por algunos IDEs anadiendo un comentario con el tipo a la declaracion de la variable XAMPP LAMP WAMP MAMP UwAmp Editar La LAMP comprende PHP aqui con Squid XAMPP es un servidor independiente de plataforma software libre que consiste principalmente en la base de datos MySQL el servidor Web Apache y los interpretes para lenguajes de script PHP y Perl El nombre proviene del acronimo de X para cualquiera de los diferentes sistemas operativos Apache MySQL PHP Perl El programa esta liberado bajo la licencia GNU y actua como un servidor Web libre facil de usar y capaz de interpretar paginas dinamicas Actualmente XAMPP esta disponible para Microsoft Windows GNU Linux Solaris y MacOS X Es un software liviano que se puede utilizar en cualquier PC No necesita muchos recursos LAMP presenta una funcionalidad parecida a XAMPP pero enfocada en Linux WAMP lo hace enfocado en Windows y MAMP para MacOS X UwAmp es muy identico a WAMP y se destaca en que se puede ejecutar desde una memoria USB Principales sitios desarrollados con PHP Editar Se utiliza PHP en millones de sitios entre los mas destacados se encuentran Wikipedia Wordpress Facebook Yahoo MailChimp Tumblr https digg com https www flickr comVease tambien EditarPagina web MySQL ASP ASP NET LinuxNotas Editar Un termino formado por la letra inicial de una o varias palabras o parte de palabras pero que se pronuncia letra por letra a diferencia del acronimo 5 Referencias Editar https www php net index php id2021 04 29 2 PHP Hypertext Preprocessor www php net Consultado el 4 de junio de 2020 PHP History of PHP Manual www php net Consultado el 4 de junio de 2020 PHP Historia de PHP y Proyectos Relacionados Manual www php net Consultado el 4 de junio de 2020 inicialismo Consultado el 3 de junio de 2020 PHP Preface Manual www php net Consultado el 4 de junio de 2020 PHP What can PHP do Manual www php net Consultado el 4 de junio de 2020 jolicode php ar drone JoliCode 21 de mayo de 2020 consultado el 4 de junio de 2020 Jackson Joab 31 de julio de 2014 PHP gets a formal specification at last ITworld en ingles Consultado el 4 de junio de 2020 a b PHP Supported Versions www php net Consultado el 4 de junio de 2020 End of life Una liberacion que ya no tiene soporte Los usuarios de esta version deben actualizarse lo antes posible ya que pueden estar expuestos a vulnerabilidades de seguridad sin parches Usage Statistics and Market Share of PHP for Websites June 2020 w3techs com Consultado el 4 de junio de 2020 PHP Unsupported Branches www php net Consultado el 4 de junio de 2020 LTS Jessie Debian Wiki wiki debian org Consultado el 4 de junio de 2020 https wiki php net rfc object typehint PHP 7 introduced scalar types for parameters and also for declaring return types for functions en ingles https wiki php net rfc object typehint introduction Consultado el 7 de julio de 2019 NaCl Networking and Cryptography library en ingles https www php net manual es book sodium php Consultado el 7 de julio de 2019 NaCl library for encryption decryption signatures password hashing and more url https download libsodium org doc en ingles https download libsodium org doc offline documentation Falta la url ayuda fechaacceso requiere url ayuda Sodium is a modern easy to use software library https www php net docs php Consultado el 7 de julio de 2019 nuevas generaciones en ingles www google com Consultado el 8 de febrero de 2018 Historical trends in the usage of server side programming languages for websites en ingles W3Techs Consultado el 10 de septiembre de 2013 PHP GTK en ingles PHP Group Consultado el 10 de septiembre de 2013 PHP Funcionamiento en linea de comandos PHP Group Consultado el 10 de septiembre de 2013 dompdf HTML to PDF converter PHP5 en ingles Consultado el 10 de septiembre de 2013 PHP Extensiones de bases de datos Manual PHP Group Consultado el 10 de septiembre de 2013 Existen tanto PHPEclipse como PDT for Eclipse Veanse http www phpeclipse com Archivado el 18 de marzo de 2009 en Wayback Machine y http www eclipse org pdt a b c Error en la cita Etiqueta lt ref gt no valida no se ha definido el contenido de las referencias llamadas historia PHP News Archives 2007 en ingles Consultado 9 de diciembre de 2007 PHP News Archives 2008 en ingles Archivo 13 de julio de 2007 PHP net a b c History of PHP and related projects The PHP Group Consultado el 25 de febrero de 2008 a b c d e PHP PHP 4 ChangeLog The PHP Group 3 de enero de 2008 Consultado el 22 de febrero de 2008 PHP Using PHP from the command line Manual The PHP Group Consultado el 11 de septiembre de 2009 a b c PHP PHP 5 ChangeLog The PHP Group 8 de noviembre de 2007 Consultado el 22 de febrero de 2008 Last 5 3 release ever available PHP 5 3 29 5 3 now EOL PHP Consultado el 20 de septiembre de 2013 Built in web server Consultado el 26 de marzo de 2012 What has changed in PHP 5 5 x Consultado el 13 de abril de 2013 Migrating from PHP 5 5 x to PHP 5 6 x Archivado desde el original el 25 de abril de 2015 Consultado el 20 de septiembre de 2014 PHP 6 Features Release Date Hosting and Download Consultado el 6 de mayo de 2011 Nombre de la proxima version de PHP Consultado el 24 de julio de 2014 RFC PHP 7 0 Timeline 4 de noviembre de 2015 Consultado el 4 de noviembre de 2015 Benchmarking PHPNG PHP RFC Return Type Declarations Preparation Tasks Consultado el 5 de julio de 2016 PHP 7 1 0 GA Externals externals io Consultado el 30 de noviembre de 2016 PHP rfc void return type php net 9 de noviembre de 2015 Consultado el 14 de noviembre de 2015 PHP rfc class constant visibility php net 27 de octubre de 2015 Consultado el 8 de diciembre de 2015 PHP RFC Nullable Types php net 10 de abril de 2014 Consultado el 14 de junio de 2016 PHP RFC Iterable php net 10 de junio de 2016 Consultado el 19 de febrero de 2017 PHP RFC Catching Multiple Exception Types php net 6 de marzo de 2016 Consultado el 19 de febrero de 2017 PHP rfc object typehint wiki php net Consultado el 20 de diciembre de 2017 PHP rfc libsodium wiki php net Consultado el 20 de diciembre de 2017 PHP Sintaxis basica Consultado el 13 de abril de 2013 Enlaces externos Editar Wikilibros alberga un libro o manual sobre Programacion en PHP Pagina web oficial Manuales y librerias en PHP PHP by Example Probar las funciones de PHP en linea 500 Tutorial extensivo de PHP y MySQL en ingles Datos Q59 Multimedia PHP Libros y manuales Programacion en PHP Recursos didacticos Curso de PHPObtenido de https es wikipedia org w index php title PHP amp oldid 136764883, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos