OBJETIVO DE PHP
Lenguaje de programación interpretado, diseñado originalmente para la creación de páginas web dinámicas. Es usado principalmente en interpretación del lado del servidor (server-side scripting) pero actualmente puede ser utilizado desde una interfaz de línea de comandos o en la creación de otros tipos de programas incluyendo aplicaciones con interfaz gráfica usando las bibliotecas Qt o GTK+.
ANTECEDENTES
· PHP/FI
PHP es el heredero de un producto anterior, llamado PHP/FI. PHP/FI fue creado por Rasmus Lerdorf en 1995, inicialmente como un simple conjunto de scripts de Perl para controlar los accesos a su trabajo online. Llamó a ese conjunto de scripts 'Personal Home Page Tools'. Según se requería más funcionalidad, Rasmus fue escribiendo una implementación C mucho mayor, que era capaz de comunicarse con bases de datos, y permitía a los usuarios desarrollar sencillas aplicaciones Web dinámicas. Rasmus eligió liberar el código fuente de PHP/FI para que cualquiera pudiese utilizarlo, así como arreglar errores y mejorar el código.
PHP/FI, que se mantuvo para páginas personales y como intérprete de formularios, incluía algunas de las funcionalidades básicas de PHP tal y como lo conocemos hoy. Tenía variables como las de Perl, interpretación automática de variables de formulario y sintaxis embebida HTML. La sintaxis por sí misma era similar a la de Perl, aunque mucho más limitada, simple y algo inconsistente.
Por 1997, PHP/FI 2.0, la segunda escritura de la implementación en C, tuvo un seguimiento estimado de varios miles de usuarios en todo el mundo, con aproximadamente 50.000 dominios informando que lo tenían instalado, sumando alrededor del 1% de los dominios de Internet. Mientras había mucha gente contribuyendo con bits de código a este proyecto, era todavía en su mayor parte el proyecto de una sola persona.
PHP/FI 2.0 no se liberó oficialmente hasta Noviembre de 1997, después de gastar la mayoría de su vida en desarrollos beta. Fue sucedido en breve tiempo por las primeras versiones alfa de PHP 3.0.
· PHP 3
PHP 3.0 era la primera versión que se parecía fielmente al PHP tal y como lo conocemos hoy en día. Fue creado por Andi Gutmans y Zeev Zuraski en 1997 reescribiéndolo completamente, después de que encontraran que PHP/FI 2.0 tenía pocas posibilidades para desarrollar una aplicación comercial que estaban desarrollando para un proyecto universitario. En un esfuerzo para cooperar y empezar a construir sobre la base de usuarios de PHP/FI existente, Andi, Rasmus y Zeev decidieron cooperar y anunciar PHP 3.0 como el sucesor oficial de PHP/FI 2.0, interrumpiéndose en su mayor parte el desarrollo de PHP/FI 2.0.
Una de las mejores características de PHP 3.0 era su gran extensibilidad. Además de proveer a los usuarios finales de una sólida infraestructura para muchísimas bases de datos, protocolos y APIs, las características de extensibilidad de PHP 3.0 atrajeron a docenas de desarrolladores a unirse y enviar nuevos módulos de extensión. Sin duda, ésta fue la clave del enorme éxito de PHP 3.0. Otras características clave introducidas en PHP 3.0 fueron el soporte de sintaxis orientado a objetos y una sintaxis de lenguaje mucho más potente y consistente.
Todo el nuevo lenguaje fue liberado bajo un nuevo nombre, que borraba la implicación de uso personal limitado que tenía el nombre PHP/FI 2.0. Se llamó 'PHP' a secas, con el significado de ser un acrónimo recursivo - PHP: Hypertext Preprocessor.
A finales de 1998, PHP creció hasta una base de instalación de decenas de millares de usuarios (estimados) y cientos de miles de sitios Web informando de su instalación. En su apogeo, PHP 3.0 estaba instalado en aproximadamente un 10% de los servidores Web en Internet.
PHP 3.0 se liberó oficialmente en Junio de 1998, después de haber gastado unos 9 meses en pruebas públicas.
· PHP 4
En el invierno de 1998, Andi Gutmans y Zeev Suraski comenzaron a trabajar en la reescritura del núcleo de PHP. Los objetivos de diseño fueron mejorar la ejecución de aplicaciones complejas, y mejorar la modularidad del código base de PHP. Estas aplicaciones se hicieron posibles por las nuevas características de PHP 3.0 y el apoyo de una gran variedad de bases de datos y APIs de terceros, pero PHP 3.0 no fue diseñado para el mantenimiento tan complejo de aplicaciones eficientemente.
El nuevo motor, apodado 'Motor Zend' (comprimido de sus apellidos, Zeev y Andi), alcanzó estos objetivos de diseño satisfactoriamente, y se introdujo por primera vez a mediados de 1999. PHP 4.0, basado en este motor, y acoplado con un gran rango de nuevas características adicionales, fue oficialmente liberado en Mayo de 2000, casi dos años después que su predecesor, PHP 3.0. Además de la mejora de ejecución de esta versión, PHP 4.0 incluía otras características clave como el soporte para la mayoría de los servidores Web, sesiones HTTP, buffers de salida, formas más seguras de controlar las entradas de usuario y muchas nuevas construcciones de lenguaje.
· PHP 5
El 13 de julio de 2004, fue lanzado PHP 5, utilizando el motor Zend Engine 2.0 (o Zend Engine 2). La versión más reciente de PHP es la 5.2.9 (26 de Febrero de 2009), que incluye todas las ventajas que provee el nuevo Zend Engine 2 como:
- Mejor soporte para la Programación Orientada a Objetos, que en versiones anteriores era extremadamente rudimentario, con PHP Data Objects.
- Mejoras de rendimiento.
- Mejor soporte para MySQL con extensión completamente reescrita.
- Mejor soporte a XML (XPath, DOM, etc.).
- Soporte nativo para SQLite.
- Soporte integrado para SOAP.
- Iteradores de datos.
- Manejo de excepciones.
HISTORIA
Versión | Fecha | Cambios más importantes | |
PHP 1.0 | 8 de junio de 1995 | Oficialmente llamado "Herramientas personales de trabajo (PHP Tools)". Es el primer uso del nombre "PHP". | |
PHP Versión 2 (PHP/FI) | 16 de abril de 1996 | Considerado por el creador como la "más rápida y simple herramienta" para la creación de páginas webs dinámicas. | |
PHP 3.0 | 6 de junio de 1998 | Desarrollo movido de una persona a muchos desarrolladores. Zeev Suraski y Andi Gutmans reescriben la base para esta versión. | |
PHP 4.0 | 22 de mayo de 2000 | Se añade un sistema más avanzado de análisis de etiquetas en dos fases análisis/ejecución llamado el motor Zend. | |
PHP 4.1 | 10 de diciembre de 2001 | Introducidas las variables superglobals ($_GET, $_SESSION, etc.). | |
PHP 4.2 | 22 de abril de 2002 | Se deshabilitan register_globals por defecto. | |
PHP 4.3 | 27 de diciembre de 2002 | Introducido la CLI, en adición a la CGI. | |
PHP 4.4 | 11 de julio de 2005 |
| |
PHP 5.0 | 13 de julio de 2004 | Motor Zend II con un nuevo modelo de objetos. | |
PHP 5.1 | 25 de noviembre de 2005 |
| |
PHP 5.2 | 2 de noviembre de 2006 | Habilitado el filtro de extensiones por defecto. | |
PHP 5.2.4 | 30 de agosto de 2007 |
| |
PHP 5.2.5 | 8 de noviembre de 2007 | Versión centrada en mejorar la estabilidad (+60 errores solucionados). |
|
PHP 5.2.8 | 8 de diciembre de 2008 |
|
|
PHP 5.2.9 | 26 de febrero de 2009 | Diversas mejoras en el ámbito de la seguridad (+50 errores solucionados). |
|
PHP 6 | S/D |
|
|
VENTAJAS Y DESVENTAJAS
VENTAJAS:
· Es un lenguaje multiplataforma.
· Capacidad de conexión con la mayoría de los manejadores de base de datos que se utilizan en la actualidad, destaca su conectividad con MySQL.
· Capacidad de expandir su potencial utilizando la enorme cantidad de módulos (llamados ext's o extensiones).
· Posee una amplia documentación en su página 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 las técnicas de Programación Orientada a Objetos.
· Biblioteca nativa de funciones sumamente amplia e incluida.
· No requiere definición de tipos de variables.
· Tiene manejo de excepciones (desde php5).
DESVENTAJAS:
· No posee una abstracción de base de datos estándar, sino bibliotecas especializadas para cada motor (a veces más de una para el mismo motor).
· No posee adecuado manejo de internacionalización, UNICODE, etc.
· Por su diseño dinámico no puede ser compilado y es muy difícil de optimizar.
PALABRAS RESERVADAS
Las palabras reservadas tienen un significado especial en PHP. Algunas de ellas representan cosas que lucen como funciones, o algunas se ven como constantes, pero no lo son, en realidad: son construcciones del lenguaje. No se puede usar ninguna de las siguientes palabras como constantes, nombres de clase, nombres de funciones o métodos. Usarlas como nombres de variables está bien, generalmente, pero puede conducir a confusiones.
PALABRA RESERVADA | SIRVE PARA |
No es permitido crear una instancia de una clase que ha sido definida como abstracta | |
Crea una matriz | |
Escapa de la estructuras de control iterante (bucle) actuales for, while, o switch | |
Ejecuta las sentencias en un switch | |
Bloque de captura | |
Define una clase | |
Crear una copia de un objeto con una replica de todas sus propiedades no es siempre lo que se desea hacer | |
Define una constante | |
Se usa dentro de la estructura del bucle para saltar el resto de la iteración actual del bucle y continuar la ejecución al comienzo de la siguiente iteración | |
Define directivas de ejecución para un bloque de código | |
Coincide con todo lo que no coincidan los otros case de un switch | |
Equivalente a exit | |
Sentencia de control de ciclo | |
Muestra una o más cadenas | |
Extiende una sentencia if para ejecutar una sentencia en caso de que la expresión en la sentencia if se evalúe como FALSE | |
Similar a else pero ejecutará una expresión alternativa solamente si la expresión condicional elseif se evalúa como TRUE | |
Determinar si una variable está vacía | |
Término de directiva | |
Termina el bloque de un ciclo for | |
Termina el bloque de foreach | |
Termina bloque de un if | |
Termina bloque de un switch | |
Termina bloque de un ciclo while | |
Evaluar una cadena como código PHP | |
Imprime un mensaje y termina el script actual | |
Herencia de clases | |
Prevé que las clases hijo puedan sobrescribir un método | |
Sentencia de control de ciclo | |
Permite iterar para cada elemento de un vector | |
Definición de funciones | |
Las variables globales deben ser declaradas globales dentro de la función si van a ser utilizadas dentro de dicha función | |
Permite la ejecución condicional de fragmentos de código | |
Implementa una interfaz | |
Incluye y evalúa el archivo especificado | |
Incluye y evalúa el fichero especificado durante la ejecución del script. Se comporta de manera similar a include(), con la única diferencia que si el código ha sido ya incluido, no se volverá a incluir | |
Define una interface, la cual permite crear código el cual especifica métodos que una clase debe implementar, sin tener que definir como serán manejados esos métodos | |
Determinar si una variable está definida | |
Asigna variables como si fueran una matriz | |
Crear una variable del tipo deseado de clase | |
Muestra una cadena | |
printf | Su funcionamiento es el mismo que print. La única diferencia es que éste soporta formatos de salida como su alineación (por defecto a la izquierda), valor numérico (número mínimo de caracteres que deben mostrarse), numero de decimales. |
sprintf | Su funcionamiento es idéntico a printf. Lo único que la cadena resultante de aplicarle un determinado formato se guarda en una variable |
Limitar la visibilidad solo a la clase que lo definió | |
Limitar el acceso a las clases heredadas (y a la clase que define el elemento) | |
Los elementos declarados con Public pueden ser accesados en todos lados | |
Incluye y evalúa el archivo especificado | |
Incluye y evalúa el fichero especificado durante la ejecución del script. Se comporta de manera similar a require(), con la única diferencia que si el código ha sido ya incluido, no se volverá a incluir | |
Termina inmediatamente la ejecución de la función y retorna su argumento como valor de la función. return() también terminará la ejecución de una sentencia eval() ó un script PHP | |
Define una variable estática | |
La sentencia switch es similar a una serie de sentencias IF en la misma expresión | |
Acceder a sus propias funciones y variables desde el interior de una clase | |
Definir excepciones | |
Bloque de intento | |
Remover una variable dada | |
use | |
Declara una variable | |
Sentencia de control de ciclo |
VARIABLES CARACTERISTICAS DE PHP
PHP incluye algunas variables que facilitan la programación; sin embargo, estas variables no pueden ser modificadas directamente por el usuario.
VARIABLES CARACTERISTICAS DE PHP | SIRVE PARA |
$_COOKIE | Array asociativo de pares (clave, valor) pasados a través de cookies |
$_ENV | Array asociativo de pares (clave, valor) del entorno |
$_FILES | Array asociativo que contiene información de los ficheros recibidos mediante POST |
$_GET | Array asociativo de pares (clave, valor) pasados a través de GET |
$_POST | Array asociativo de pares (clave, valor) pasados a través de POST |
$_SERVER | Array asociativo de pares (clave, valor) del servidor |
$_SERVER['argc'] | Número de parámetros pasados al script en su ejecución. |
$_SERVER['PHP_SELF'] | Nombre del script que se está ejecutando |
$_SESSION | Array asociativo de pares (clave, valor) de sesión |
$DOCUMENT_ROOT | Nos devuelve el path físico en el que se encuentra alojada la página en el servidor. |
$HTTP_ACCEPT_LANGUAGE | Nos devuelve la o las abreviaturas de la lengua considerada como principal por el navegador. Esta lengua o lenguas principales pueden ser elegidas en el menú de opciones del navegador. Esta variable resulta también extremadamente útil para enviar al internauta a las páginas escritas en su lengua, si es que existen. |
$HTTP_COOKIES_VARS | Se trata de un array que almacena los nombres y contenidos de las cookies. Veremos qué son más adelante. |
$HTTP_GET_VARS | Se trata de un array que almacena los nombres y contenidos de las variables enviadas al script por URL o por formularios GET |
$HTTP_POST_VARS | Se trata de un array que almacena los nombres y contenidos de las variables enviadas al script por medio de un formulario POST |
$HTTP_REFERER | Nos indica la URL desde la cual el internauta ha tenido acceso a la página. Muy interesante para generar botones de "Atrás" dinámicos o para crear nuestros propios sistemas de estadísticas de visitas. |
$HTTP_USER_AGENT | Nos informa principalmente sobre el sistema operativo y tipo y versión de navegador utilizado por el internauta. Su principal utilidad radica en que, a partir de esta información, podemos redireccionar nuestros usuarios hacia páginas optimizadas para su navegador o realizar cualquier otro tipo de acción en el contexto de un navegador determinado. |
$PHP_AUTH_PW | Almacena la variable password cuando se efectúa la entrada a páginas de acceso restringido. Combinado con $PHP_AUTH_USER resulta ideal para controlar el acceso a las páginas internas del sitio. |
$PHP_AUTH_USER | Almacena la variable usuario cuando se efectúa la entrada a páginas de acceso restringido. Combinado con $PHP_AUTH_PW resulta ideal para controlar el acceso a las páginas internas del sitio. |
$PHP_SELF | Nos devuelve una cadena con la URL del script que está siendo ejecutado. Muy interesante para crear botones para recargar la página. |
$PHPSESSID | Guarda el identificador de sesión del usuario. Veremos más adelante en qué consisten las sesiones. |
$REMOTE_ADDR | Muestra la dirección IP del visitante. |
CARACTERES ESPECIALES
En PHP existen los llamados caracteres especiales. Éstos se emplean para delimitar una cadena, indicar una etiqueta como variable, colocar en una cadena caracteres usados como operadores, o bien caracteres no imprimibles como salto de línea, tabulación y otros.
CARACTERES ESPECIALES | SIRVE PARA | ||||||||||||
$ | Indicar que la etiqueta es una variable. Acepta los siguientes tipos:
| ||||||||||||
' ' | Delimitar una cadena | ||||||||||||
“ “ | Delimitar una cadena | ||||||||||||
<<< >>> | Delimitar una cadena | ||||||||||||
\n | Nueva línea | ||||||||||||
\r | Retorno de carro | ||||||||||||
\t | Tabulación horizontal | ||||||||||||
\\ | Barra invertida | ||||||||||||
\$ | Signo de dólar | ||||||||||||
\" | Comillas dobles | ||||||||||||
. | Concatena dos cadenas | ||||||||||||
.= | Concatena dos cadenas e incluye un carácter de nueva línea al final | ||||||||||||
; | Terminar una instrucción | ||||||||||||
// ó # | Comentarios de una sola línea | ||||||||||||
/* y */ | Comentarios multilínea. También se puede emplear para comentarios de una sola línea | ||||||||||||
[0-7]{1,3} | Carácter ASCII que coincide con el numero octal | ||||||||||||
x[0-9A-Fa-f]{1,2} | Carácter ASCII que coincide con el numero hexadecimal | ||||||||||||
y ?> | Delimitar el código PHP | ||||||||||||
y ?> | Delimitar el código PHP | ||||||||||||
| Delimitar el código PHP |
FORMATO DE SALIDA PARA CADENAS | SIRVE PARA |
% | Representa el símbolo del porcentaje |
B | El argumento se trata como nº entero y se representa en codificación binaria. |
C | El argumento se trata como nº entero y se muestra el carácter cuyo código ASCII se corresponde con el valor. |
D | El argumento se trata como nº entero y se representa en codificación decimal sin parte fraccionaria |
F | El argumento se trata como un nº de tipo double y se representa como un decimal sin coma flotante |
O | El argumento se trata como un nº entero y se representa en codificación octal |
S | El argumento se trata y representa como una cadena de caracteres |
X | El argumento se considera un nº entero y se representa en codificación hexadecimal en minúsculas |
X | El argumento se considera un nº entero y se representa en codificación hexadecimal en mayúsculas |
OPERADORES
Los operadores son un componente esencial de cualquier lenguaje de programación. Con ellos podemos asignar, unir, cambiar o comparar valores de datos, cambiar el flujo del programa, etc. Los operadores son símbolos que representan operaciones sobre un valor. Estos operadores requieren de dos operandos.
OPERADOR ARITMETICO | SIRVE PARA | ||||
+ | Adición | ||||
- | Substracción | ||||
* | Multiplicación | ||||
/ | División | ||||
% | Módulo | ||||
++ | Incremento en una unidad
| ||||
-- | Decremento en una unidad
|
OPERADOR DE ASIGNACION | SIRVE PARA |
= | Asigna a la parte derecha el valor izquierdo |
+= | Realiza la suma de la derecha con la izquierda y la asigna a la derecha |
-= | Realiza la resta de la derecha con la izquierda y la asigna a la derecha |
*= | Realiza la multiplicación de la derecha con la izquierda y la asigna a la derecha |
/= | Realiza la división de la derecha con la izquierda y la asigna a la derecha |
% | Se obtiene el resto y se asigna |
.= | Concatena el valor de la izquierda con la derecha y lo asigna a la derecha |
OPERADOR LOGICO | SIRVE PARA |
! | Operador NO o negación. Si era true pasa a false y viceversa |
and ó && | Operador Y, si ambos son verdaderos vale verdadero |
or ó | | | Operador O, vale verdadero si alguno de los dos es verdadero |
xor | Verdadero si alguno de los dos es true pero nunca ambos |
OPERADOR A NIVEL DE BIT | SIRVE PARA |
& ó Y | Se activan los bits que están activos en ambos operandos |
| ó O | Se activan los bits que están activos en uno de los dos operandos |
^ ó Xor | Se activan los bits que están activos en uno de los operandos pero no en ambos a la vez |
~ ó No | Se activan los bits que no están activos en el operando |
$a << $b | Desplaza los bits de $a, $b posiciones hacia la izquierda (por aritmética binaria, cada posición desplazada equivale a multiplicar por dos el valor de $a) |
$a >> $b | Desplaza los bits de $a, $b posiciones hacia la derecha (por aritmética binaria, cada posición desplazada equivale a dividir entre dos el valor de $a) |
OPERADOR DE COMPARACION | SIRVE PARA |
== | Comprueba si dos números/variables son iguales |
=== | Comprueba si dos números/variables son iguales tanto en valor como en tipo |
!= | Comprueba si dos números/variables son distintos |
> | Mayor que, devuelve true en caso afirmativo |
< | Menor que, devuelve true en caso afirmativo |
>= | Mayor o igual que |
<= | Menor o igual que |
No hay comentarios:
Publicar un comentario