| Regresar | Temario | Ing. Angel Castro (UNAM - DGSCA Centro Coapa) |
1. Introducción al Lenguaje PHP
¿Qué es PHP?
PHP, acrónimo de "PHP: Hypertext Preprocessor", es un lenguaje interpretado de alto nivel embebido en páginas HTML. La mayoría de su sintaxis es similar a C, Java y Perl, con solamente un par de caracteristicas PHP específicas. La meta de este lenguaje es permitir escribir a los creadores de páginas web, páginas dinámicas de una manera rápida y fácil.
Para ilustrar esto podemos ver un simple ejemplo:
<html>
<head>
<title>Example</title>
</head>
<body>
<?php echo "Hola mundo, Esto es un Script PHP";?>
</body>
</html>
Lo que hace diferente a PHP es que el código que se deba ejecutar se ejecuta siempre en el servidor.
Así, al ejecutar el script anterior, el cliente recibirá sólo los resultados de la ejecución por lo que es imposible para el cliente acceder al código que generó la página.
¿Qué se puede hacer con PHP?
En el nivel más básico PHP es equiparable a un CGI cualquiera. La mayor ventaja de PHP es que está preparado para soportar accesos a muchos tipos de bases de datos como:
Además de esto, PHP soporta la utilización de otros protocolos como IMAP, SNMP, NNTP, POP3 o HTTP a nivel de socket.
Algo de Historia
PHP fue concebido en otono de 1994 por Rasmus Lerdorf. Las primeras versiones no distribuidas al público fueron usadas en un sus páginas web para mantener un control sobre quien consultaba su currículum. La primera versión disponible para el público a principios de 1995 fue conocida como "Herramientas para paginas web personales" (Personal Home Page Tools). Consistian en un analizador sintáctico muy simple que solo entendia unas cuantas macros y una serie de utilidades comunes en las páginas web de entonces, un libro de visitas, un contador y otras pequenas cosas. El analizador sintactico fue reescrito a mediados de 1995 y fue nombrado PHP/FI version 2. FI viene de otro programa que Rasmus habia escrito y que procesaba los datos de formularios. Asi que combinó las "Herramientas para paginas web personales", el "intérprete de formularios", anadio soporte para mSQL y PHP/FI vio la luz. PHP/FI crecio a gran velocidad y la gente empezó a contribuir en el código.
Es difícil dar estadísticas exactas, pero se estima que a finales de 1996 PHP/FI se estaba usando al menos en 15.000 páginas web alrededor del mundo. A mediados de 1997 este número habia crecido a mas de 50.000. A mediados de 1997 el desarrollo del proyecto sufrio un profundo cambio, dejó de ser un proyecto personal de Rasmus, al cual habian ayudado un grupo de usuarios y se convirtio en un proyecto de grupo mucho más organizado. El analizador sintáctico se reescribio desde el principio por Zeev Suraski y Andi Gutmans y este nuevo analizador establecio las bases para PHP versión 3. Gran cantidad de codigo de PHP/FI fue portado a PHP3 y otra gran cantidad fue escrito complétamente de nuevo.
Hoy en día (finales 1999), tanto PHP/FI como PHP3 se distribuyen en un gran número de productos comerciales tales como el servidor web "C2's StrongHold" y Redhat Linux. Una estimación conservativa basada en estadísticas de NetCraft (ver también Estudio de NetCraft sobre servidores web), es que más de 1.000.000 de servidores alrededor del mundo usan PHP. Para hacernos una idea, este número es mayor que el número de servidores que utilizan el "Netscape's Enterprise server" en Internet.
A la vez que todo esto está pasando, el trabajo de desarrollo de la próxima generación de PHP está en marcha. Esta versión utiliza el potente motor de scripts Zend para proporcionar altas prestaciones, así como soporta otros servidores web, además de apache, que corren PHP como módulo nativo.
Saliendo de HTML
Hay cuatro formas de salir de HTML y entrar en el "modo de código PHP":
Formas de salir de HTML
1. <? echo ("esta es la más simple, una instrucción de
procesado SGML\n"); ?>
2. <?php echo("si quiere servir documentos XML, haga esto\n");
?>
3. <script language="php">
echo ("a algunos editores (como FrontPage) no les gustan las intrucciones
de procesado");
</script>
4. <% echo ("Puedes también usar etiquetas tipo ASP");
%>
<%= $variable; # Esto es una forma abreviada de "<%echo .."
%>
Separación de instrucciones
Las instrucciones se separan igual que en C o perl - terminando cada sentencia con un punto y coma.
La etiqueta de cierre (?>) también implica el fin de la sentencia, así lo siguiente es equivalente:
<?php
echo "Esto es una prueba";
?>
<?php echo "Esto es una prueba" ?>
Los conceptos a tener en cuenta en PHP con las variables son los siguientes:
Variables predefinidas
- Cualquier nombre de variable está precedido por el símbolo $.
- En PHP las variables siempre se asignan por valor, aunque en PHP4 ya existen métodos para asignaciones por referencia (&).
Para obtener una lista de todas estas variables predefinidas se puede utilizar la funcion phinfo().
Si se tratara de un servidor Apache, la lista de variables es:
- GATEWAY_INTERFACE:
- SERVER_NAME
- SERVER_SOFTWARE
- SERVER_PROTOCOL
- REQUEST_METHOD
- QUERY_STRING
- DOCUMENT_ROOT
- HTTP_ACCEPT
- HTTP_ACCEPT_CHARSET
- HTTP_ENCODING
- HTTP_ACCEPT_LANGUAJE
- HTTP_CONNECTION
- HTTP_HOST
- HTTP_REFERER
- HTTP_USER_AGENT
- REMOTE_ADDR
- REMOTE_PORT
- SCRIPT_FILENAME
- SERVER_ADMIN
- SERVER_PORT
- SERVER_SIGNATURE
- PATH_TANSLATED
- SCRIPT_NAME
- REQUEST_URL
las variables creadas por el propio PHP son:
Varibles variablesPHP permite un mecanismo para mantener variables con un nombre no fijo.
Para acceder al valor de una variable, se accede con:
ó Ambas sentencias provocaran la salida "hola mundo".
Variables extenas a PHP
Variables de los forms HTML
Las variables de entorno, tales como $HOME, para entornos Linux, se pueden utilizar desde PHP.
Los tipos de cada variable en PHP no están tan claros como en C. El intérprete
asigna el tipo de una variable según el uso que se esté haciendo
de ella. Para asignar un tipo fijo a una variable se utiliza la función
settype(). Los tipos son:
Respecto al tipo entero y flotante, no hay mucho que decir, así que detallaremos sólo los tipos String, Arrays, Objetos y Juggling.
String
Las cadenas pueden estar delimitadas por " o '. Si la cadena está
delimitada por comillas dobles, cualquier variable incluida dentro de ella
será sustituida por su valor. Para especificar el carácter
" se escapará con el carácter backslash '\'. Otra forma
de delimitar una cadena es utilizando la sintaxis de documentos "<<<"
Ejemplo:
$variable = <<< EOD
Ejemplo de cadena
que ocupa
varias líneas
EOD;
Esta última sintaxis sólo se puede utilizar con PHP 4. Las operaciones con cadenas son exactamente igual que en PERL.
Ejemplo:
$a[]="hola"
La instrucción anterior añade el string hola al final del array 'a'. Los arrays pueden ser ordenados utilizando las siguientes funciones: asort(), arsort(), ksort(), rsort(), sort(), uasort(), usort() y uksort() .
Otras funciones para el manejo de arrays son: count(), next(), prev() y each() .
El Constructor array()
Una forma de crear un array es utilizando el constructor array() que crea una simple estructura de acuedo a los elementos que tenga.
$canasta_de_frutas=array('manzana','naranja','platano','pera');
la pasada instruccion es lo mismo que lo siguiente:
$canasta_de_frutas[0]='manzana';
$canasta_de_frutas[1]='naranja';
$canasta_de_frutas[2]='platano';
$canasta_de_frutas[3]='pera';Array Asociativos.
La unica diferencia es que los indices no son numeros si no que es generalmente una palabra alfanumerica llamada llave.
$canasta_de_frutas=array('rojo' => 'manzana', 'naranja' => 'naranja',
'amarillo' => 'platano', 'verde' => 'pera');Arrays Asociativos Muldimensionales
En PHP, los arrays multidimensionales combinan las propiedades de un array unidimensional explicados anteriormente. Los indices de un array multidimensional pueden ser tanto numéricos como asociativos.
(Nota: hay que tener cuidado con la sintaxis de los arrays multidimensionales asociativos incluidos dentro de una cadena).
Ejemplo de array multidimensional asociativo:
$a=array(
"manzana" => array("color" => "rojo", "tacto" => "suave"),
"naranja" => array("color" => "naranja", "tacto" => "rugoso"),
"platano" => array("color" => "amarillo", "tacto" => "suave")
);
1.4 Expresiones y operadores
<?php
$res = @mysql_query("select nombre from clientes")
or die ("Error en la selección, '$php_errormsg'");
?>
La tabla que nos puede resumir la precedencia de cada uno de los operadores es:
Los Bloques son pedazos de codigo dentro del programa que se van a ejecutar uno tras otro dentro del programa con un objetivo, la forma de marcarlos es exactamente igual que en el lenguaje C, se utilizan las llaves, una llave que abre '{' indica que comienza el bloque, y una llave que cierra '}' indica que termina el bloque.
Las sentencias son instrucciones de una sola linea que tiene que interpretar PHP dentro del programa con un objetivo, ya sea funcion definida por el usuario, funcion de php, u alguna referencia a alguna objeto.
Funciones definidas por el usuario
Las funciones son una secuencia de instrucciones que cumplen con un objetivo en comun, se utiliza mucho cuando se quiere hacer lo mismo varias veces y solo cambian algunos detalles, entonces se utiliza una funcion para optimizar el codigo y hacerlo mas legible para otros programadores.
function foo($arg1, $arg2, ..., $argN)
{
echo "Función ejemplo"
return $value;
}Dentro de una función puede aparecer cualquier cosa, incluso otra función o definiciones de clase.
PHP permite el mecanismo de argumentos por defecto. Un ejemplo de esta caracteristica es:
function hacerCafe($tipo="capuchino")
{
return "he hecho un café $tipo\n";
}En la llamada a esta función se obtendrá una frase u otra según se llame:
o Valores devueltos
function numeros()
{
return array(0,1,2);
}
list ($cero, $uno, $dos) = numeros();
Funciones Variables
Además, existen una serie de variables predefinidas denominadas:
- _FILE_: Fichero que se está procesando.
- _LINE_: Línea del fichero que se está procesando
- _PHP_VERSION: Versión de PHP.
- PHP_OS: Sistema operativo del cliente.
- TRUE: Verdadero.
- FALSE: Falso.
- E_ERROR: Error sin recuperación.
- E_WARNING: Error recuperable.
- E_PARSE: Error no recuperable (sintaxis).
- E_NOTICE: Puede Tratarse de un error o no. Normalmente permite continuar la ejecución.
Ejemplo:Todas las constantes que empiezan por "E_"se utilizan normalmente con la función error_reporting().
<?php
define("CONSTANTE", "hello world.");
echo CONSTANTE;
?>
PHP soporta comentarios tipo 'C', 'C++' y shell de Unix. Por ejemplo:
<?php
echo "Esto es una prueba"; // Esto es un comentario tipo c++ para una línea
/* Esto es un comentario multilínea
otra línea más de comentario*/
echo "Esto es aún otra prueba";
echo "Una Prueba Final"; # Este es un comentario tipo shell
?>
El tipo de comentario de "una línea" sólo comenta, en realidad, hasta el fin de la línea o el bloque actual de código PHP, lo que venga primero.
<h1>Esto es un <?# echo "simple";?> ejemplo.</h1>
La cabecera de arriba dirá 'Esto es un ejemplo'.
Se debería tener cuidado para no anidar comentarios de tipo 'C', lo cual puede ocurrir cuando se comentan grandes bloques.<?php
/*
echo "Esto es una prueba"; /* Este comentario causará un problema */
*/
?>
Así, require, reemplaza su llamada por el contenido del fichero que requiere, e include, incluye y evalua el fichero especificado.