jueves, 11 de marzo de 2010

UNIDAD 3 ANALISIS LÉXICO (parte1)

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:


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

abstract

No es permitido crear una instancia de una clase que ha sido definida como abstracta

array

Crea una matriz

break

Escapa de la estructuras de control iterante (bucle) actuales for, while, o switch

case

Ejecuta las sentencias en un switch

catch

Bloque de captura

class

Define una clase

clone

Crear una copia de un objeto con una replica de todas sus propiedades no es siempre lo que se desea hacer

const

Define una constante

continue

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

declare

Define directivas de ejecución para un bloque de código

default

Coincide con todo lo que no coincidan los otros case de un switch

die

Equivalente a exit

do

Sentencia de control de ciclo

echo

Muestra una o más cadenas

else

Extiende una sentencia if para ejecutar una sentencia en caso de que la expresión en la sentencia if se evalúe como FALSE

elseif

Similar a else pero ejecutará una expresión alternativa solamente si la expresión condicional elseif se evalúa como TRUE

empty

Determinar si una variable está vacía

enddeclare

Término de directiva

endfor

Termina el bloque de un ciclo for

endforeach

Termina el bloque de foreach

endif

Termina bloque de un if

endswitch

Termina bloque de un switch

endwhile

Termina bloque de un ciclo while

eval

Evaluar una cadena como código PHP

exit

Imprime un mensaje y termina el script actual

extends

Herencia de clases

final

Prevé que las clases hijo puedan sobrescribir un método

for

Sentencia de control de ciclo

foreach

Permite iterar para cada elemento de un vector

function

Definición de funciones

global

Las variables globales deben ser declaradas globales dentro de la función si van a ser utilizadas dentro de dicha función

if

Permite la ejecución condicional de fragmentos de código

implements

Implementa una interfaz

include

Incluye y evalúa el archivo especificado

include_once

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

interface

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

isset

Determinar si una variable está definida

list

Asigna variables como si fueran una matriz

new

Crear una variable del tipo deseado de clase

print

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

private

Limitar la visibilidad solo a la clase que lo definió

protected

Limitar el acceso a las clases heredadas (y a la clase que define el elemento)

public

Los elementos declarados con Public pueden ser accesados en todos lados

require

Incluye y evalúa el archivo especificado

require_once

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

return

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

static

Define una variable estática

switch

La sentencia switch es similar a una serie de sentencias IF en la misma expresión

this

Acceder a sus propias funciones y variables desde el interior de una clase

throw

Definir excepciones

try

Bloque de intento

unset

Remover una variable dada

use


var

Declara una variable

while

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:

Integer

Números enteros positivos y negativos

Double

Números decimales o de coma flotante

String

Cadenas de texto

Boolean

Valores True o False

Array

Tipo especial de colección de valores

Object

Tipo especial de dato complejo

' '

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

++$a

Preincremento

$a++

Postincremento

--

Decremento en una unidad

--$a

Predecremento

$a--

Postdecremento

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