« Volver al listado completo

Programación web con PHP

Módulo 2.2: Conceptos básicos de programación y PHP (I)

Documentación oficial de PHP

La web oficial del proyecto PHP es www.php.net. En ella podemos encontrar desde información sobre las últimas versiones de PHP, descarga de ejecutables para su instalación, hasta documentación muy detallada y explicativa de todas las funciones del lenguaje.

Es posible que al principio no comprendamos bien la información de esta página al buscar información sobre una función, pero con la práctica se convertirá en nuestra referencia más importante.

Podemos comenzar a leer la versión en español de la documentación en el siguiente enlace: http://php.net/manual/es

La parte que más nos va a interesar al comienzo de nuestro aprendizaje es la referencia principal del lenguaje PHP, que se lee desde el siguiente enlace: http://php.net/manual/es/langref.php

Código PHP y código HTML

La forma usual como están configurados los servidores web es la siguiente:

En general, nos podemos encontrar ficheros .php cuyo uso encaje con alguno de los siguientes perfiles:

Comentarios de código

Cuando escribimos código, podemos necesitar escribir comentarios que nos permitan explicar o aclarar el funcionamiento de lo que estemos programando.

Esto lo podemos hacer o bien anteponiendo dos barras inclinadas // delante de una linea de comentario, o bien incluyendo los caracteres de apertura /* y de cierre */, con lo que todo el contenido dentro de estas marcas, aunque sea de algunos caracteres o muchas lineas, será considerado comentario, y no se procesará por el intérprete de PHP.

Tratamiento de errores

Cuando cometamos un error al programar en PHP, en principio no podemos saberlo hasta haber intentado ejecutar el código, ya que como comentamos PHP es un lenguaje interpretado, no es un lenguaje compilado.

Normalmente el mensaje de error se muestra directamente en el lugar del documento donde se produciría la salida PHP del código que se está ejecutando en dicho momento, pero esto puede ser modificado por diferentes situaciones.

Existe una directríz en el fichero de configuración php.ini que establece el nivel por defecto a la hora de mostrar errores de código, llamada ERROR_LEVEL.

Esta se puede especificar de diferentes maneras:

A continuación encontrará una serie de ejemplos sobre como activar diversos niveles de notificación de errores mediante error_reporting.

// Desactivar toda notificación de error
error_reporting(0);

// Notificar solamente errores de ejecución
error_reporting(E_ERROR | E_WARNING | E_PARSE);

// Notificar E_NOTICE también puede ser bueno (para informar de variables
// no inicializadas o capturar errores en nombres de variables ...)
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

// Notificar todos los errores excepto E_NOTICE
error_reporting(E_ALL ^ E_NOTICE);

// Notificar todos los errores de PHP (ver el registro de cambios)
error_reporting(E_ALL);

// Lo mismo que error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);

La lista de niveles de error que pueden mostrarse u ocultarse está definida en la documentación oficial en el siguiente enlace http://php.net/manual/es/errorfunc.constants.php

Variables y constantes

En PHP, las variables se especifican anteponiendo un signo $ delante del identificador que las define.

Como su propio nombre indica, estas pueden contener diferentes valores a lo largo de la ejecución del código PHP.

Algunos ejemplos de variables válidas:

$a
$mi_valor
$ColumnFactory
$nombre3

Intentar leer el valor de una variable que no ha sido anteriormente establecida provocará un error de tipo NOTICE, devolviendo un valor NULL en su lugar.

Las constantes deben ser declaradas inicialmente mediante la instrucción define(NOMBRE_CTE,'valor'), para luego ser utilizadas (sin el signo $ a diferencia de las variables) directamente con el nombre definido, NOMBRE_CTE. Es habitual definir y utilizar las contantes con todas las letras mayúsculas, aunque no es obligatorio.

Es posible definir una constante sin establecer ningún valor. De esta manera, si más adelante se comprobase si la constante está definida, nos serviría para detectar que se ejecutó el código donde se realizaba la definición.

Algunos ejemplos de definción de constantes son:

define('COLOR_FONDO','#c8c8c8');
define('DEBUG_MODE');

Existe en PHP multitud de variables y constantes predefinidas, cuyo contenido podemos leer, para averiguar por ejemplo la IP del cliente conectado, o la versión de PHP que se está ejecutando. Puedes consultar la lista completa en estos enlaces:

Un par de variables predefinidas interesantes son $_GET y $_POST. Estas contienen los valores de los campos de formulario que hayan sido enviados por el navegador (en función de si su método de envio ha sido get o post), y serán una forma muy importante de recibir información desde el usuario.

No queremos que en este curso sea preciso mucho conocimiento de HTML para aprender PHP, pero pongamos como ejemplo que se ha enviado un formulario en HTML con método GET que contenía un cuadro de texto definido como:

<input type="text" name="nombre"/>

Cuyo valor era “Manuel”. Esto provocará que al leer la variable $_GET[‘nombre’], ésta devuelva la cadena “Manuel”. Las variables definidas en las URLs del navegador con ?var1=valor1&var2=valor2 también aparecerán definidas en $_GET.

Otra variable predefinida interesante es $_SESSION. Esta permite que definamos y almacenemos cualquier valor en ella, de manera que si el usuario tiene habilitadas las cookies en su navegador, podamos en subsecuentes ejecuciones de nuestro código leer los valores introducidos. Esto es importante, ya que nuestro programa carece de estado entre llamadas, olvidando todo lo que se hubiera definido en ejecuciones anteriores. Solo es preciso almacenar en el navegador del visitante una cookie de sesión que lo identifique, luego todos los datos almacenados en $_SESSION se guardan en unos ficheros de textos asociados al valor de dicha cookie. Este método es útil para almacenar pequeñas cantidades de datos, pero para cantidades grandes es más óptimos utilizar un motor de base de datos como MySQL.

Hemois visto que siempre tenemos que dar un valor a una variable antes de intentar leer un valor de ella. La función isset nos permite comprobar si una variable existe, sin provocar ningún error en caso negativo. La función empty es similar, solo que devolverá verdadero si la variable no existe, o es la cadena vacia, o es el entero 0, y falso en todos los demás casos.

//$a no está todavía definida
echo isset($a); //No devuelve nada, es decir, devuelve falso
echo empty($a); //Devuelve "1", es decir, verdadero

$a='';
echo isset($a); //Devuelve "1", es decir, verdadero
echo empty($a); //Devuelve "1", es decir, verdadero (tiene cadena vacía)

$a='A';
echo isset($a); //Devuelve "1", es decir, verdadero
echo empty($a); //No devuelve nada, es decir, devuelve falso

Tipos de datos básicos

En PHP no es preciso declarar las variables como en otros lenguajes antes de su uso, ni definir qué tipo de dato en concreto van a almacenar… siempre que les asignemos algún valor antes de intentar leerlo.

Los tipos de datos principales que podemos almacenar en las variables son:

Algunos ejemplos de asignación de valores a variables son los siguientes:

$a = true;
$paginas = 10;
$factores = 1.23;
$mensaje_ejemplo = "Hola mundo!";
$otro_mensaje_ejemplo = 'Hola de nuevo';
$dias_semana = array('lunes', 'martes', 'miercoles', 'jueves', 'viernes', 'sabado', 'domingo');
$fecha = new DateTime('2001-01-01');

Operadores

Está muy bien definir tipos de datos, pero debemos poder también realizar operaciones con ellos. Para ello contamos con diferentes operadores. Por la cantidad de datos que necesitan, los podemos clasificar en:

Por el tipo de dato sobre el que operan, los podríamos clasificar de otra manera:

Los operadores tienen cierta precedencia que puede ser alterada utilizando paréntesis.

Al realizar una operación sobre una variable, y almacenar el resultado sobre la misma variable, tenemos una forma corta para expresar estas asignaciones:

$a = 5;
//Le sumamos 3
$a = $a + 3;
//Lo anterior es equivalente a esto (aunque lo estamos repitiendo dos veces)
$a += 3;

$m = 'Hola';
$m = $m. ' mundo';
//Lo anterior es equivalente a esto (aunque lo estamos repitiendo dos veces)
$m .= ' mundo';

Una asignación es una operación a su vez, que devuelve un valor que puede ser utilizado para otra asignación.

$c = 3;
$a = $b = $c + 1;
//Ahora tanto $a como $b valen 4

Los operadores unarios ++ y – realizan una asígnación y suma o resta de 1 en una variable, por lo que las siguientes expresiones son equivalentes

$a = 0; //Para empezar con algún valor
$a = $a + 1;
$a += 1;
$a++:

$b = 0;
$b = $b - 1;
$b -= 1;
$b--;

Si el operador ++ o -- se antepone a la variable, primero se realiza la operación de sumar o restar uno, y luego se devuelve el resultado. Si se pospone (como en los ejemplos anteriores), primero se devuelve el valor original de la variable, y después se realiza el incremento o decremento.

$a = 1;
$b = $a++;
echo $b; //1

$a = 1;
$c = ++$a;
echo $c //2

Cadenas, operaciones con cadenas

El manejo de cadenas es muy importante para construir un resultado que enviar al navegador.

La operación más básica que podemos hacer con dos cadenas es la concatenación con el operador . (punto), donde unimos varias cadenas entre si.

La función substr nos devuelve un trozo de la cadena actual.

La función strlen nos devuleve el número de caracteres que tiene una cadena.

La función str_replace reemplaza todas las apariciones de la cadena buscada con otra de reemplazo.

$a = 'Hola';
$b = 'Manuel';
$c = $a . ' ' . $b; 
echo $c; //Resultado "Hola Manuel"
echo substr($c, 0 ,4); //Primeros 4 caracteres, resultado "Hola"
echo substr($c, 0, -2); //Resta últimos 2 caracteres, resultado "Hola Manu"
echo substr($c, 2, 4);  //Resultado "la M"
echo strlen($c); //Resultado 11
echo str_replace('Hola', 'Adios', $c); //Resultado "Adios Manuel"

Existe numerosas funciones para operar con cadenas, puedes consultar la lista entera en este enlace: http://php.net/manual/es/book.strings.php

Arrays

Hemos visto brevemente cómo definir un array o matriz de elementos. A continuación veremos algunos ejemplos sobre el trabajo con arays.

//Definir un array vacio
$a = array();

//Definir un array con varios elementos
$a = array('Manzana','Platano');

//Añadir un elemento al final de un array
$a[] = 'Pera';

//Consultar el elemento en una posición concreta de un array
//El primer elemento es el número 0
echo $a[1]; //muestra "Platano"

//Modificar el elemento en una posición concreta
$a[1] = 'Naranja';

Por defecto, las claves que definen cada elemento del array son valores numéricos incrementales. También podemos utilizar otro tipo de claves que definamos por nuestra cuenta. A este tipo de arrays se le llama “asociativo”.

$colores = array(
  'rojo'  => '#FF0000',
  'verde' => '#00FF00',
  'azul'  => '#0000FF'
);
echo $colores['azul']; //Devuelve "#0000FF"

Tambien es posible definir un array dentro de otro array, lo que da lugar a arrays mutidimensionales

$tablero = array(
  0 => array('O','O','X'),
  1 => array('X','O',' '),
  2 => array(' ','X',' ')
);
echo $tablero[0][2]; //Devuelve "X"

Siguiente »