Abrir menú principal

PHP, acrónimo recursivo en inglés de PHP: Hypertext Preprocessor (preprocesador de hipertexto), es un lenguaje de programación de propósito general de código del lado del servidor originalmente diseñado para el preprocesado de texto plano en UTF-8. Posteriormente se aplicó al desarrollo web de contenido dinámico, dando un paso evolutivo en el concepto de aplicación en línea, por su carácter de servicio.

PHP
PHP-logo.svg
Desarrollador(es)
PHP Group
https://www.php.net
Información general
Extensiones comunes .php, .phtml, .php3, .php4, .php5, .php7, .phps, .php-s, .pht
Paradigma Multiparadigma: imperativo, funcional, orientado a objetos, procedural, reflexivo
Apareció en 1995
Diseñado por Rasmus Lerdorf
Última versión estable 7.3.9[1](29 de agosto de 2019 (16 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

Su implementación en los documentos HTML era aparentemente muy sencilla. Hay que decir, que, PHP no genera HTML, sino que ofrece una salida de texto con codificación UTF-8 compatible con los documentos HTML. El programador puede dotar a la salida de los tag's propios del HTML y los exploradores más comunes para navegar por internet, reconocerán muy rápidamente el formato UTF-8 y lo adaptarán ofreciendo una salida entendible.

Fue uno de los primeros lenguajes de programación del lado del servidor que se podían incorporar directamente en un documento HTML en lugar de llamar a un archivo externo que procese los datos. El código es interpretado por un servidor web con un módulo de procesador de PHP que genera el texto plano en formato UTF-8, ampliamente reconocido por el estándar HTML, dando como resultado, en los exploradores, una salida al usuario perfectamente entendible.

PHP ha evolucionado por lo que ahora incluye también una interfaz de línea de comandos que puede ser usada en aplicaciones gráficas independientes. Puede ser usado en la mayoría de los servidores web al igual que en muchos sistemas operativos y plataformas sin ningún costo.

Fue creado originalmente por Rasmus Lerdorf en el año 1995. Actualmente el lenguaje sigue siendo desarrollado con nuevas funciones por el grupo PHP.[2]​ Este lenguaje forma parte del software libre publicado bajo la licencia PHPv3_01, una licencia Open Source validada por Open Source Initiative. La licencia de PHP es del estilo de licencias BSD, sin la condición de copyleft asociada con la Licencia Pública General de GNU.

Índice

EtimologíaEditar

PHP es un acrónimo recursivo que se llama PHP Hypertext Preprocessor (inicialmente PHP/FI, o, Personal Home Page Form Interpreter).[3]​ Fue creado originalmente por Rasmus Lerdorf; sin embargo, la implementación principal de PHP es producida ahora por The PHP Group y sirve como el estándar de facto para PHP, al no haber una especificación formal. Publicado con la PHP License, la Free Software Foundation considera esta licencia como software libre.[4]

Visión generalEditar

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, cuando hablamos 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 'sentimeintos', 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, [5]​manejo de números enteros, tratamiento de la criptografía cuando se usa una Base64,[6][7][8]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 [9]​ 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.[10]​ 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,[11]​ 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).[12]

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. Éste 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,[13]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.[14]

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.[15]

HistoriaEditar

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.[2]​ 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.[2]

En mayo del 2000, PHP 4 se lanzó bajo el poder del motor Zend 1.0. El 13 de julio del 2007 se anunció la suspensión del soporte y desarrollo de la versión 4 de PHP,[16]​ 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.[17]​ Según esta noticia,[18]​ se le dio soporte a fallos críticos hasta el 9 de agosto del 2008.

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

Historial de lanzamientoEditar

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".[19]
2.0 01-11-1997 Considerada por sus creadores la "herramienta más rápida y sencilla" para crear páginas web dinámicas.[19]
3.0 06-06-1998 20-10-2000 Zeev Suraski y Andi Gutmans reescribieron la base para esta versión.[19]
4.0 22-05-2000 23-01-2001 Se añadió un sistema de parsing de dos fases llamado motor Zend.[20]
4.1 10-12-2001 12-03-2002 Se introducen 'superglobales' ($_GET, $_POST, $_SESSION, etc.)[20]
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.[20]
4.3 27-12-2002 31-03-2005 Se introduce CLI, y CGI.[20][21]
4.4 11-07-2005 07-08-2008 Se añaden páginas man para phpize y php-config.[20]
5.0 13-07-2004 05-09-2005 Motor Zend II con un nuevo modelo de objetos.[22]
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.[22]
5.2 02-11-2006 06-01-2011 Activida extensión de filtro por defecto. Soporte JSON nativo.[22]
5.3 30-06-2009 14-08-2014[23] 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 reemplzado 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.[24]​ 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.[25]
5.6 20-08-2014 31-12-2018 Constantes con expresiones escalares, listas de argumentos de longitud variable y exponencial mediante el operador **.[26]
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.[27]​ 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.[28]

7.0 03-11-2015[29] 03-12-2018 Mejoras de rendimiento ,[30]​ declaración de tipos de retorno en funciones [31]
7.1 01-12-2016[32][33] 01-12-2019 Tipo de retorno vacío,[34]​ Clase constante modificadores de visibilidad,[35]​ Tipos nullable,[36]​ iterable de tipo seudo,[37]​ Captura múltiples tipos de excepciones.[38]
7.2 30-11-2017 30-11-2020 Nuevo tipo de retorno "object",[39]​ integración de Libsodium como una extensión del núcleo[40]
7.3 6-12-2018 6-12-2021

SintaxisEditar

La sintaxis de PHP, se fundamenta en los principios de programación de C. Veamos los siguientes ejemplos:

Servicios UTF-8Editar

Programa Hola mundo con PHP embebido en código HTML:

<!DOCTYPE html>
<html lang="es">
    <head>
        <meta charset="UTF-8" />
        <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 para web:

<?php
//area de cabeceras, constantes, includes y variables
  $contentDom=''; //Inicializamos variable

//Logica de la app
  $contentDom ='<!DOCTYPE html>';
  $contentDom.='  <html lang="es">';
  $contentDom.='    <head>';
  $contentDom.='      <meta charset="UTF-8" />';
  $contentDom.='      <title> Ejemplo básico PHP</title>';
  $contentDom.='    </head>';
  $contentDom.='    <body>';
  $contentDom.='      Hola mundo';
  $contentDom.='    </body>';
  $contentDom.='  </html>';

//muestra resultados
  echo $contentDom;
//En todas las apps monolíticas, seguir este orden.
?>

Programa Hola mundo con PHP en forma de servicio de texto UTF-8:

<?php
//Lado servidor:
//nombre del archivo: hola_mundo.php
//Las cabeceras del lado servidor, quedan a criterio del desarrollador.
//Se aplica el mismo criterio que en una aplicación monolítica, con la excepción de que se añade un concepto más:

//area de cabeceras, constantes, includes y variables
  $contentDom=''; //Inicializamos variable
  $ejecutoLogica=false;

//Seguridad del documento
if(isset($_POST['accion'])){
  $ejecutoLogica=true;
}

//Logica de la app
if($ejecutoLogica){
  if($_POST['accion']=='saluda'){
    $contentDom. = 'Hola mundo<br>';
  }else{
    $contentDom ='<!DOCTYPE html>';
    $contentDom.='  <html lang="es">';
    $contentDom.='    <head>';
    $contentDom.='      <meta charset="UTF-8" />';
    $contentDom.='      <title> Ejemplo básico PHP</title>';
    $contentDom.='      <script type="text/javascript" src="/rutaDelArchivo1.js"></script>';
    $contentDom.='    </head>';
    $contentDom.="    <body onload='doyResultado();'>";
    $contentDom.="      <div id='resultado'>";
    $contentDom.= '      A10 moon do{}while();<br>';
  }

  $contentDom.='      </div>';
  $contentDom.='    </body>';
  $contentDom.='  </html>';
}

//muestra resultados
  echo $contentDom;
//En todas las apps asíncronas, seguir este orden.

?>

Lado cliente:

//archivo: rutaDelArchivo1.js
          var cargando=false;
          var conexion=[];
          window.onload = function (){
            if(!cargando){
              if(window.XMLHttpRequest){
                conexion=new XMLHttpRequest();
              }else{
                conexion=new ActiveXObject("Microsoft.XMLHTTP");
              }
              conexion.onreadystatechange=muestraContenido;
              cargando=true;
            }
          }

          function muestraContenido(){
            if(conexion.readyState==4 && conexion.status==200){
              document.getElementById("resultado").insertAdjacentHTML("beforeend",conexion.responseText);
            }
          }

          function doyResultado(){
            //invocamos al archivo php
            conexion.open("POST", "hola_mundo.php", true);
            //Definimos la cabecera del documento: muy importante establecer las cabeceras tanto en el cliente como en el servidor
            //si no queremos que nuestra ip sea notificada por el explorador como una ip spameadora.
            //Los robots maliciosos, se valen de estas vulnerabilidades para abusar de sitios mal programados.
            conexion.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            //Establecemos la matriz post y su valor
            conexion.send("accion=saluda"); 
          }

Archivo html generado en el lado cliente como resultado de un servicio UTF-8:

<!DOCTYPE html>
<html lang="es">
    <head>
        <meta charset="UTF-8" />
        <title> Ejemplo básico PHP</title>
        <script type="text/javascript" src="/rutaDelArchivo1.js"></script>
    </head>
    <body onload='doyResultado();'>
      <div id='resultado'>

      </div>
    </body>
</html>

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.[41]

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 (;).

Bases de datos (MySQL)Editar

PHP puede combinarse con MySQL para trabajar con bases de datos. En la actualidad esta última se utiliza muchísimo. En este 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
// Solo mostrar errores fatales, de parseo y advertencias para el ejemplo
error_reporting(E_ERROR | E_PARSE | E_WARNING);

// 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']));

// Comprobar que el formulario fue enviado utilizando el boton enviar y que las variables no están vacías
if (isset($_POST['enviar']) && !empty($usuario) && !empty($contrasena)) {

   // Conectar al servidor MySQL y seleccionar la base de datos con el nombre 'login'
   $conexion = new mysqli('localhost', 'root', '', 'login');

   // Consulta para buscar los usuarios en la base de datos
   $consulta_usuario = $conexion->query("SELECT * FROM usuarios WHERE usuario = '$usuario' LIMIT 1");

   // 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
        echo "Has iniciado la sesión correctamente";

      } else {

         // Texto de error
         echo "La contraseña utilizada no es correcta";

      }

   } else {
   
       // Texto de error
      echo "El usuario introducido no existe";

   }

   // Cerrar la conexión
   $conexion->close();

//Esta forma de conexión es ineficiente. Hay riesgo de dejar hilos abiertos en el servidor. Ej: problemas de nivel medio en los controladores y/o librerías.
}
?>

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.

<?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 RESTEditar

Los servicios REST se fundamentan en tres conceptos fundamentales:

  Concepto de recurso
  Concepto de itinerancia
  Concepto de API

Características de PHPEditar

CaracterísticasEditar

  • 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.

InconvenientesEditar

  • 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, UwAmpEditar

 
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 PHPEditar

Se utiliza PHP en millones de sitios; entre los más destacados se encuentran Wikipedia.org y Wordpress.com.

Véase tambiénEditar

ReferenciasEditar

  1. https://www.php.net/archive/2019.php#2019-08-29-1
  2. a b c d «Historia de PHP y Proyectos Relacionados». Archivado desde el original el 30 de octubre de 2007. Consultado el 17 de octubre de 2012. 
  3. FAQ General PHP.net.
  4. «Proyecto GNU - Licencias de software libre incompatibles con la GPL». Consultado el 17 de octubre de 2012. 
  5. ["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. 
  6. «NaCl: Networking and Cryptography library» (en inglés). https://www.php.net/manual/es/book.sodium.php. Consultado el 7 de julio de 2019. 
  7. «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. 
  8. «Sodium is a modern, easy-to-use software library.». https://www.php.net/docs.php. Consultado el 7 de julio de 2019. 
  9. «nuevas generaciones» (en inglés). www.google.com. Consultado el 8 de febrero de 2018. 
  10. «Historical trends in the usage of server-side programming languages for websites» (en inglés). W3Techs. Consultado el 10 de septiembre de 2013. 
  11. «PHP-GTK» (en inglés). PHP Group. Consultado el 10 de septiembre de 2013. 
  12. «PHP: Funcionamiento en línea de comandos». PHP Group. Consultado el 10 de septiembre de 2013. 
  13. «dompdf - HTML to PDF converter (PHP5)» (en inglés). Consultado el 10 de septiembre de 2013. 
  14. «PHP: Extensiones de bases de datos - Manual». PHP Group. Consultado el 10 de septiembre de 2013. 
  15. Existen tanto PHPEclipse como PDT for Eclipse. Véanse http://www.phpeclipse.com
  16. PHP: News Archives 2007 (en inglés). Consultado 9 de diciembre de 2007.
  17. PHP: News Archives 2008 (en inglés).
  18. Archivo: 13 de julio de 2007 PHP.net.
  19. a b c «History of PHP and related projects». The PHP Group. Consultado el 25 de febrero de 2008. 
  20. a b c d e «PHP: PHP 4 ChangeLog». The PHP Group. 3 de enero de 2008. Consultado el 22 de febrero de 2008. 
  21. «PHP: Using PHP from the command line - Manual:». The PHP Group. Consultado el 11 de septiembre de 2009. 
  22. a b c «PHP: PHP 5 ChangeLog». The PHP Group. 8 de noviembre de 2007. Consultado el 22 de febrero de 2008. 
  23. «Last 5.3 release ever available: PHP 5.3.29 - 5.3 now EOL». PHP. Consultado el 20 de septiembre de 2013. 
  24. «Built-in web server». Consultado el 26 de marzo de 2012. 
  25. «What has changed in PHP 5.5.x». Consultado el 13 de abril de 2013. 
  26. «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. 
  27. «PHP 6: Features, Release Date, Hosting and Download». Consultado el 6 de mayo de 2011. 
  28. «Nombre de la próxima versión de PHP». Consultado el 24 de julio de 2014. 
  29. «RFC: PHP 7.0 Timeline». 4 de noviembre de 2015. Consultado el 4 de noviembre de 2015. 
  30. «Benchmarking PHPNG!». 
  31. «PHP RFC: Return Type Declarations». 
  32. «Preparation Tasks». Consultado el 5 de julio de 2016. 
  33. «PHP 7.1.0 GA - Externals». externals.io. Consultado el 30 de noviembre de 2016. 
  34. «PHP: rfc:void_return_type». php.net. 9 de noviembre de 2015. Consultado el 14 de noviembre de 2015. 
  35. «PHP: rfc:class_constant_visibility». php.net. 27 de octubre de 2015. Consultado el 8 de diciembre de 2015. 
  36. «PHP RFC: Nullable Types». php.net. 10 de abril de 2014. Consultado el 14 de junio de 2016. 
  37. «PHP RFC: Iterable». php.net. 10 de junio de 2016. Consultado el 19 de febrero de 2017. 
  38. «PHP RFC: Catching Multiple Exception Types». php.net. 6 de marzo de 2016. Consultado el 19 de febrero de 2017. 
  39. «PHP: rfc:object-typehint». wiki.php.net. Consultado el 20 de diciembre de 2017. 
  40. «PHP: rfc:libsodium». wiki.php.net. Consultado el 20 de diciembre de 2017. 
  41. «PHP: Sintaxis básica». Consultado el 13 de abril de 2013. 

Enlaces externosEditar