miércoles, 13 de mayo de 2009

Notas para iniciarse en PHP, Parte 3: Sintaxis y conceptos básicos




¡Saludos nuevamente!

Este artículo tiene por propósito ayudar a los programadores que inicien en el lenguaje PHP a dar sus primeros pasos con una mayor confianza, ya que tome algunas anotaciones de varios detalles que encontré importantes para comenzar.

Hasta ahora el mejor manual que he encontrado sobre el contenido del lenguaje PHP es el que encontramos en su sitio oficial, que por cierto tengo incluido en la lista de enlaces de este blog, y es al que siempre recurro en caso de una duda sobre las funciones y clases nativas del lenguaje, o sobre cualquier contenido en general. Digo esto porque es de llamar la atención que en algunos foros de programación, se contestan a muchas de las dudas de los usuarios mandándolos a revisar este mismo manual, lo cual habla por un lado de lo útil que resulta esta herramienta y por otro, del gran desconocimiento que tienen los usuarios que inician en PHP sobre a donde acudir para solucionar sus problemas.

Los bloques de código

Dicho esto pasemos a ver un poco sobre las especificaciones del lenguaje, el primer punto es que el código deberá incluirse dentro de etiquetas que indicarán el inicio y finalización de los bloques de código, estas pueden ser las que vimos <?php. . .?> y <script language="php">. . .</script>, como se muestra en el contenido de la página oficial estas son las dos formas que siempre están disponibles en todas las configuraciones por defecto.


1. <?php echo("si quieres servir documentos XHTML o XML, haz como aquí\n"); ?>


2. <? echo ("esta es la más simple, una instrucción de procesado SGML \n"); ?>

<?= expression ?> Esto es una abreviatura de "<? echo expression ?>"


3. <script language="php">

echo ("muchos editores (como FrontPage) no

aceptan instrucciones de procesado");

</script>


4. <% echo ("Opcionalmente, puedes usar las etiquetas ASP"); %>

<%= $variable; # Esto es una abreviatura de "<% echo . . ." %>

En el caso de las etiquetas <?... ?> y <% ... %>, éstas solo estarán disponibles si así se especifica en el archivo de configuración php.ini.

Una de las ventajas que ofrece PHP a los programadores de lenguajes más antiguos como C o PERL es que su sintaxis general es muy parecida a la de estos lenguajes, realmente teniendo dominada la sintaxis de C es bastante sencillo comprender la de PHP, lo que quizas les puede resultar más complicado es la combinación que muchas veces se hace del contenido HTML con código PHP, cosa que iremos viendo en los siguientes ejemplos.

Un programa puede consistir en un archivo HTML con código PHP embebido en estas etiquetas o, en un archivo que incluya solamente una o más bloques de código PHP, y que cualquiera que sea la salida se genere desde las instrucciones de este lenguaje. Un ejemplo de un código embebido en HTML sería el siguiente:
<?php
if ($expression) {
?>
<strong>This is true.</strong>
<?php
} else {
?>
<strong>This is false.</strong>
<?php
}
?>

De este código podemos aprender dos cosas, primero que las instrucciones de control condicionales if y else del lenguaje son similares a las de C, y segundo que es posible separar en diferentes script la ejecución de un solo bloque de código. Lo que ocurrirá en la ejecución de este código es que si la variable $expresion, contiene un valor verdadero, se mostrará el mensaje This is true, porque cuando PHP encuentra la etiqueta ?> de fin de bloque, empieza a escribir lo que encuentra tal cual hasta que se topa con otra etiqueta de inicio de bloque, en caso de que la condición sea falsa, ignorará todo lo que este contenido entre sus llaves de apertura y de cierre { ... }, sin importar que se encuentren dentro de bloques de código diferentes, siguendo la ejecución del programa se mostraría el mensaje This is false.

Este ejemplo, a pesar su simplicidad es importante, ya que resulta más eficiente mandar a desplegar contenido HTML en pantalla separandolo del código PHP de manera similar, en lugar de desplegarlo desde las funciones echo() o printf(), como es común que suceda en muchos ejemplos por la red.

Separación de instrucciones

Al igual que en lenguajes como C o PERL las instrucciones se separan unas de otras utilizando el caracter punto y coma ";". En caso de que una instrucción sea la última dentro de un bloque de código, este separador puede ser omitido.

Comentarios

PHP también soporta los tipos de comentarios de C y C++ indicados por los caracteres /* */ y //, agregando además los comentarios de una sola línea indicados por #:
<?php
echo "This is a test"; // Comentario estilo C++ de una sola línea
/* Comentario estilo C++ de múltiples líneas
que permite realizar saltos de línea */
echo "This is yet another test";
echo "One Final Test"; # Comentario estilo línea de comandos (shell) de una solo línea
?>

Tipos de datos en PHP


PHP soporta varios tipos de datos existentes en otros lenguajes, pero con la gran diferencia de que las variables en PHP no necesitan de una declaración del tipo de dato que poseerán, PHP asume el tipo de dato de que se trata a partir del valor que el programador asigne a esas variables, además, las variables son dinámicas ya que en tiempo de ejecución pueden adquirir valores de distintos tipos de datos. Basta con que una expresión sea precedida por el caracter de signo de pesos "$" para que esta represente una variable.

PHP soporta ocho tipos primitivos.
*Nota: A diferencia de otros lenguajes no existe una diferencia entre el tipo double y float en PHP, cualquiera de los dos son equivalentes para representar números de punto flotante, solo que en los manuales más actuales se utiliza normalmente solo float.

El siguiente ejemplo de código muestra la forma de declarar variables con distintos tipos de datos en PHP:
<?php
$un_bool = TRUE; // un valor booleano
$un_str = "foo"; // una cadena
$un_str2 = 'foo'; // una cadena
$un_int = 12; // un entero

echo gettype($un_bool); // imprime: boolean
echo gettype($un_str); // imprime: string

// Si este valor es un entero, incrementarlo en cuatro
if (is_int($un_int)) {
$un_int += 4;
}

// Si $bool es una cadena, imprimirla
// (no imprime nada)
if (is_string($un_bool)) {
echo "Cadena: $un_bool";
}
?>

Una anotación importante es que PHP realiza conversiones entre los tipos de datos de forma automática al ejecutar algunas de las instrucciones de nuestros programas, por ejemplo, al sumar un valor entero con una cadena que contiene un número, automáticamente convertirá la cadena en un valor numérico para realizar la suma. Dentro del manual encontramos un apartado dedicado a este tipo casos, llamado manipulación de tipos de datos. Algo similar sucede al someter el valor de una variable a un bloque condicional -como un if o un switch-, si el valor no es de tipo booleano PHP automáticamente realizará la conversión de este valor a un booleano equivalente, lo cual puede apreciarce en la tabla de comparación de tipos del manual.

Otros conceptos básicos
  • Los nombres de las variables son sencibles a mayúsculas y minusculas.
  • Los nombres de las variables siguen las mismas reglas que otras etiquetas en PHP. Un nombre de variable válido tiene que empezar con una letra o un carácter de subrayado (underscore), seguido de cualquier número de letras, números y caracteres de subrayado.
  • De forma predeterminada las variables se asignan por valor, pero php ofrece la opción para asignar por referencia. Basta con que se agregue el caracter ampersan '&' antesediendo el nombre de la variable referenciada en la asignación, para obtener la referecia a esta variable, por ejemplo:
    <?php
    $foo = 'Bob'; // Asigna el valor 'Bob' a $foo
    $bar = &$foo; // Referenciar $foo vía $bar.
    $bar = "Mi nombre es $bar"; // Modificat $bar...
    echo $foo; // $foo también se modifica.
    echo $bar;
    ?>
  • Una variable no necesariamente tiene que ser inicializada para poder utiizarla, pero es una buena prácticar el hacerlo. Las variables no inicializadas toman un valor predeterminado dependiendo del contexto en el que se estén utilizando, así, una variable de tipo bool poseerá un valor por defecto de false, los enteros y flotantes tendrán cero, las cadenas se establecen como una cadena vacía y las matrices se convierten en una matriz vacía.
  • Una forma infalible para detectar si una variable ha sido o no inicializada es utilizar la función del lenguaje isset().
Al internarse en la información sobre las variables en PHP nos encontramos además con las variables predefinidas del lenguaje, que se trata de un conjunto de variables que nos proporcina PHP para realizar gran cantidad de tareas. Éstas son de gran importancia ya que a través de ellas es que podemos acceder a la información del servidor Web, leer los datos de los formularios, leer el contenido de las cookies y las sesiones, entre otras cosas, por lo que su aplicación merece un post completo, por lo que lo veremos este temas en un siguiente artículo.

El ámbito de las variables es el contexto dentro del cual una variable está definida, este es importante porque nos indica las regiones del código desde las cuales una variable puede ser accedida. Por fortuna el ámbito de las variables en PHP es de tipo simple, ya que basta con declarar una variable en cualquier bloque de código, para accederla desde cualquier otro bloque del archivo o dentro de otros archivos de código incluidos o requeridos. Este ámbito puede verse limitado solamente por el uso de funciones o clases.

También es posible declarar constantes dentro de nuestro programas a través de las funciones define(). Esta función solo aceptan valores escalares. Las constantes tienen la caracteristica de que se declaran sin utilizar el signo de pesos "$" de las variables.

Las estructuras de control del lenguaje son bastante similares a las de C, como vemos se trata de un gran número, ya que el manual de PHP dedica un solo capítulo a su estudio. Una de las que encuentro más interesante es la sentencia foreach, ya que además de no tener un equivalente en C, nos permite acceder dentro de un ciclo a cada uno de los valores de un arreglo de forma más sencilla, ya sea de forma simple:
<?php
$arreglo = array("uno", "dos", "tres");
foreach ($arreglo as $valor) {
echo "Valor: $valor";
}
?>
en la que se extraen solo los valores del arreglo, o de forma indexada:
<?php
$arreglo = array("uno", "dos", "tres");
foreach ($arreglo as $llave=>$valor) {
echo "Llave: $llave, valor: $valor";
}
?>
en la que además de los valores obtenemos la llave de cada valor, que corresponde al valor en el indice del arreglo que ocupan cada uno de los valores.

Y es hasta aquí donde llega este post, en los siguientes artículos veremos la forma de implementar funciones dentro del lenguaje, otras estructuras de control, el uso de variables predefinidas para leer datos de los formularios, y el manejo de clases y objetos en las versiones 4 y 5 del lenguaje.

Hasta la próxima.

0 comentarios:

Publicar un comentario