Está en la página 1de 28

Ciclo Formativo de Grado Superior

Desarrollo de Aplicaciones Web


Módulo
Desarrollo Web en Entorno Servidor

Curso Académico
2019-2020

UT02. Sintaxis del Lenguaje PHP (APUNTES)

Versión del Documento


1.0

Actualizado a
21/10/2019
Profesor
Jonay García González

Email
jonaygarciav@gmail.com
Tabla de Contenidos

Tabla de contenido
1. Sintaxis del Lenguaje PHP .............................................................................................................................. 1
1.1. Sintaxis básica .................................................................................................................................... 1
1.1.1 Etiquetas de PHP ....................................................................................................................... 1
1.1.2 Salir del modo HTML ................................................................................................................. 1
1.1.3 Separación de Instrucciones ...................................................................................................... 2
1.1.4 Comentarios .............................................................................................................................. 3
1.2. Tipos .................................................................................................................................................. 3
1.2.1 Booleanos .................................................................................................................................. 3
1.2.2 Números enteros (Integers) ...................................................................................................... 5
1.2.3 Números de punto flotante (floats) .......................................................................................... 6
1.2.4 Cadena de caracteres (string) .................................................................................................... 7
1.2.5 Arrays ......................................................................................................................................... 8
1.2.6 Iterables ..................................................................................................................................... 9
1.2.7 Objetos ...................................................................................................................................... 9
1.2.8 Nulo ......................................................................................................................................... 10
1.3. Variables .......................................................................................................................................... 11
1.3.1 Conceptos básicos ................................................................................................................... 11
1.3.2 Ámbito de las variables............................................................................................................ 12
1.3.3 Variables variables ................................................................................................................... 14
1.3.4 Variables desde fuentes externas ........................................................................................... 14
1.3.5 Variables predefinidas (TODO) ................................................................................................ 15
1.4. Constantes ....................................................................................................................................... 15
1.4.1 Constantes predefinidas .......................................................................................................... 16
1.5. Operadores (TODO) ......................................................................................................................... 17
1.5.1 Precedencia de operadores ..................................................................................................... 17
1.5.2 Operadores aritméticos ........................................................................................................... 19
1.5.3 Operadores de asignación ....................................................................................................... 19
1.5.4 Operadores de comparación ................................................................................................... 20
1.5.5 Operadores de incremento/decremento ................................................................................ 21
1.5.6 Operadores Lógicos ................................................................................................................. 21
1.6. Estructuras de Control (TODO) ........................................................................................................ 21
1.6.1 if / if-else / elseif ...................................................................................................................... 21
1.6.2 while ........................................................................................................................................ 23

i Jonay García González


Tabla de Contenidos
1.6.3 do-while ................................................................................................................................... 24
1.6.4 For ............................................................................................................................................ 24
1.7. Funciones (TODO) ............................................................................................................................ 25
1.8. Excepciones (TODO) ........................................................................................................................ 25

ii Jonay García González


Sintaxis del Lenguaje PHP

1. Sintaxis del Lenguaje PHP

1.1. Sintaxis básica

1.1.1 Etiquetas de PHP

Cuando PHP analiza un fichero, busca las etiquetas de apertura y cierre, que son <?php y ?>, y que indican a
PHP dónde empezar y finalizar la interpretación del código. Este mecanismo permite embeber a PHP en todo
tipo de documentos, ya que todo lo que esté fuera de las etiquetas de apertura y cierre de PHP será ignorado
por el analizador.

PHP también permite la etiqueta de apertura abreviada <? (la cual está desaconsejada debido a que sólo está
disponible si se habilita con la directiva short_open_tag del fichero de configuración php.ini, o si PHP se
configuró con la opción --enable-short-tags).

Si un fichero contiene solamente código de PHP, es preferible omitir la etiqueta de cierre de PHP al final del
mismo. Así se previene la adición de espacios en blanco o nuevas líneas accidentales después de la etiqueta
de cierre.

<?php
echo "Hola mundo";

// ... más código

echo "Última sentencia";

// el script finaliza aquí sin etiqueta de cierre de PHP

1.1.2 Salir del modo HTML

Cualquier cosa fuera de un par de etiquetas de apertura y cierre es ignorado por el intérprete de PHP, lo que
permite que los ficheros de PHP tengan contenido mixto. Esto hace que PHP pueda ser embebido en
documentos HTML para, por ejemplo, crear plantillas.

<p>Esto va a ser ignorado por PHP y mostrado por el navegador.</p>


<?php echo 'Mientras que esto va a ser interpretado.'; ?>
<p>Esto también será ignorado por PHP y mostrado por el navegador.</p>

1 Jonay García González


Sintaxis del Lenguaje PHP

Este ejemplo funciona como estaba previsto, porque cuando PHP intercepta las etiquetas de cierre ?>,
simplemente comienza a imprimir cualquier cosa que encuentre hasta que dé con otra etiqueta de apertura
a menos que se encuentre en mitad de una sentencia condicional, en cuyo caso el intérprete determinará el
resultado de la condición antes de tomar una decisión de qué es lo que tiene que saltar.

Empleo de estructuras con condiciones:

<?php if ($expresión == true): ?>


Esto se mostrará si la expresión es verdadera.
<?php else: ?>
En caso contrario se mostrará esto.
<?php endif; ?>

En este ejemplo, PHP saltará los bloques donde la condición no se cumpla, incluso si están fuera de las
etiquetas de apertura/cierre de PHP, los saltará según la condición debido a que el intérprete salta los
bloques contenidos dentro de una condición que no se cumpla.

Para imprimir bloques de texto grandes, es más eficiente abandonar el modo intérprete de PHP que enviar
todo el texto a través de echo o print.

1.1.3 Separación de Instrucciones

Como en C o en Perl, PHP requiere que las instrucciones terminen en punto y coma al final de cada sentencia.
La etiqueta de cierre de un bloque de código de PHP automáticamente implica un punto y coma; no es
necesario usar un punto y coma para cerrar la última línea de un bloque de PHP. La etiqueta de cierre del
bloque incluirá la nueva línea final inmediata si está presente.

<?php
echo 'Esto es una prueba';
?>

<?php echo 'Esto es una prueba' ?>

<?php echo 'Hemos omitido la última etiqueta de cierre';

Nota: La etiqueta de cierre de un bloque de PHP es opcional al final de un fichero.

2 Jonay García González


Sintaxis del Lenguaje PHP

1.1.4 Comentarios

PHP admite comentarios al estilo de C, C++ y de consola de Unix (estilo de Perl). Por ejemplo:

echo 'Esto es una prueba'; // Comentario estilo de c++ de una sola línea

/* Esto es un comentario multilínea


y otra lína de comentarios */
echo 'Esto es otra prueba';

echo 'Una prueba final'; # Comentario al estilo de consola de una sola línea

Los comentarios al estilo de "una sola línea" solo comentan hasta el final de la línea o del bloque actual de
código de PHP, lo primero que suceda. Esto implica que el código HTML después de // ... ?> o # ... ?> será
impreso: ?> sale del modo PHP y vuelve al modo HTML.

<h1>Esto es un <?php # echo 'simple';?> ejemplo</h1>


<p>El encabezado anterior dirá 'Esto es un ejemplo'.</p>

Los comentarios al estilo de C finalizan con el primer */ que se encuentre. Asegúrese de no anidar
comentarios al estilo de C. Es muy fácil cometer este error cuando se intenta comentar un bloque grande de
código.

/*
echo 'Esto es una prueba'; /* Este comentario causará un problema*/
*/

1.2. Tipos

1.2.1 Booleanos

Este es el tipo más simple. Un boolean expresa un valor que indica verdad. Puede ser TRUE (verdadero) o
FALSE (falso).

Para especificar un literal de tipo boolean se emplean las constantes TRUE o FALSE. Ambas no son
susceptibles a mayúsculas y minúsculas.

$foo = True; // asigna el valor TRUE a $foo

3 Jonay García González


Sintaxis del Lenguaje PHP

Normalmente, el resultado de un operador que devuelve un valor de tipo boolean es pasado a una estructura
de control.

En el siguiente ejemplo el operador == compara el valor de la variable variable $version con una constante
1.23, si son iguales devuelve TRUE:

// == es un operador que comprueba la igualdad y devuelve un booleano


$version=1.23
if ($version == "1.23") {
echo "La versión es 1.23";
}

En el siguiente ejemplo el operador == compara si el valor de la variable $mostrar_separadores es igual a


TRUE:

$mostrar_separadores = TRUE;
if ($mostrar_separadores == TRUE) {
echo "<hr>\n";
}

El siguiente ejemplo es igual que el anterior, más simplificado, sin usar el operador ==:

$mostrar_separadors = TRUE
if ($mostrar_separadores) {
echo "<hr>\n";
}

Para convertir explícitamente un valor al tipo boolean, use los amoldamientos (bool) o (boolean). Sin
embargo, en la mayoría de casos es innecesario el amoldamiento, ya que un valor será convertido
automáticamente si un operador, función o estructura de control requiere un argumento de tipo boolean.

Cuando se realizan conversiones a boolean, los siguientes valores se consideran FALSE:

 El boolean FALSE mismo


 El integer 0 (cero)
 El float 0.0 (cero)
 El valor string vacío, y el string "0"
 Un array con cero elementos
 Un object con cero variables miembro (sólo en PHP 4)
 El tipo especial NULL (incluidas variables no establecidas)
 Objetos SimpleXML creados desde etiquetas vacías

4 Jonay García González


Sintaxis del Lenguaje PHP

Cualquier otro valor se considera como TRUE. -1 se considera TRUE, como cualquier otro número distinto de
cero (ya sea negativo o positivo).

var_dump((bool) ""); // bool(false)


var_dump((bool) 1); // bool(true)
var_dump((bool) -2); // bool(true)
var_dump((bool) "foo"); // bool(true)
var_dump((bool) 2.3e5); // bool(true)
var_dump((bool) array(12)); // bool(true)
var_dump((bool) array()); // bool(false)
var_dump((bool) "false"); // bool(true)

El método var_dump muestra información acerca de una variable. El siguiente ejemplo muestra información
de las variables $b y $c:

$b = 3.1;
$c = true;
var_dump($b, $c);

La salida del ejemplo anterior es la siguiente:

float(3.1)
bool(true)

1.2.2 Números enteros (Integers)

Un número entero (o integer) es un número del conjunto ℤ = {..., -2, -1, 0, 1, 2, ...}.

El tamaño de un integer depende de la plataforma, aunque el valor usual es un valor máximo de


aproximadamente dos mil millones (esto es, 32 bits con signo). Las plataformas de 64 bits normalmente
tienen un valor máximo de aproximadamente 9E18, excepto en Windows antes de PHP 7, que siempre es de
32 bits. El tamaño de un integer se puede determinar mediante la constante PHP_INT_SIZE, el valor máximo
mediante la constante PHP_INT_MAX y el valor mínimo mediante la constante PHP_INT_MIN.

Ejemplo de declaración de variables con un valor entero:


$a = 1234; // número decimal
$a = -123; // un número negativo

5 Jonay García González


Sintaxis del Lenguaje PHP

Si PHP encuentra un número fuera de los límites de un integer, se interpretará en su lugar como un valor de
tipo float. También, una operación cuyo resultado sea un número fuera de los límites de un integer devolverá
en su lugar un valor de tipo float.

Ejemplo de desbordamiento de enteros en sistemas de 64 bit:

$numero_grande = 9223372036854775807;
var_dump($numero_grande); // int(9223372036854775807)

$numero_grande = 9223372036854775808;
var_dump($numero_grande); // float(9.2233720368548E+18)

Para convertir explícitamente un valor al tipo integer se puede emplear los amoldamientos (int) como
(integer). Sin embargo, la mayoría de las veces la conversión no es necesaria, ya que un valor es convertido
de forma automática cuando un operador, función o estructura de control requiera un argumento de tipo
integer.

Nota: Un valor también puede ser convertido al tipo integer mediante la función intval().

Un booleano a FALSE producirá 0 (cero), y un booleano TRUE producirá 1 (uno). Si convertimos un float a un
integer, el número será redondeado eliminando la parte decimal.

1.2.3 Números de punto flotante (floats)

Los números de punto flotante (también conocidos como "de coma flotante" en español, y "floats" en inglés)
pueden ser especificados usando cualquiera de las siguientes sintaxis:

$a = 1.234;
$b = 1.2e3;
$c = 7E-10;

El tamaño de un float depende de la plataforma, aunque un valor común consiste en un máximo de


aproximadamente 1.8e308 con una precisión cercana a los 14 dígitos decimales (el formato de 64 bit del
IEEE).

Nota: Algunas operaciones numéricas pueden resultar en un valor representado por la constante NAN. Este
resultado representa un valor no definido o no representable mediante cálculos de punto flotante.

6 Jonay García González


Sintaxis del Lenguaje PHP

1.2.4 Cadena de caracteres (string)

Un string, o cadena, es una serie de caracteres donde cada carácter es lo mismo que un byte. Esto significa
que PHP solo admite un conjunto de 256 caracteres, y de ahí que no ofrezca soporte nativo para Unicode.
Véanse los detalles del tipo string. Un string puede llegar a alcanzar hasta 2 GB de tamaño (2147483647 bytes
máximo).

Un literal de tipo string se puede especificar utilizando entrecomillado simple (‘ ‘) o utilizando


entrecomillado doble (“ “).

Ejemplo de definición de string utilizando entrecomillado simple en una línea y en múltiples líneas:

echo 'Esto es una cadena sencilla';

echo 'También se pueden incluir nuevas líneas en


un string de esta forma, ya que es
correcto hacerlo así';

La característica más importante del entrecomillado doble de un string es el hecho de que se expanden los
nombres de las variables.

$val = 5;
echo “El valor de la variable val es $val”;

Los string pueden ser concatenados empleando el operador '.' (punto). Fíjese que el operador '+' (suma) no
servirá para concatenar.

Ejemplo de concatenación de strings:

$str1 = ”Mi nombre es “;


$str2 = “Pedro.”
echo $1.$2;

El resultado del ejemplo anterior será:

Mi nombre es Pedro.

7 Jonay García González


Sintaxis del Lenguaje PHP

1.2.5 Arrays

Un array en PHP es en realidad un mapa ordenado. Un mapa es un tipo de datos que asocia valores con
claves. Este tipo se optimiza para varios usos diferentes; se puede emplear como un array, lista (vector), tabla
asociativa (tabla hash - una implementación de un mapa), diccionario, colección, pila, cola, y posiblemente
más. Ya que los valores de un array pueden ser otros arrays, también son posibles árboles y arrays
multidimensionales.

Un ejemplo de declaración de array en forma de clave => valor:

$array = (
"foo" => "bar",
"bar" => "foo",
);

print_r($array);

La clave puede ser un integer o un string. El valor puede ser de cualquier tipo.

Para recorrer un array en forma de hash se utiliza la sentencia foreach de la siguiente manera:

foreach ($array as $key => $value) {


echo "$key => $value\n";

El resultado del ejemplo anterior sería el siguiente:

foo => bar


bar => foo

Ejemplo de un array unidimensional, para recorrer el array también se utiliza la sentencia foreach:

$colors = array('rojo', 'azul', 'verde', 'amarillo');

foreach ($colors as $color) {


echo "¿Le gusta el $color?\n";
}

El resultado del ejemplo anterior sería:

8 Jonay García González


Sintaxis del Lenguaje PHP

¿Le gusta el rojo?


¿Le gusta el azul?
¿Le gusta el verde?
¿Le gusta el amarillo?

1.2.6 Iterables

Iterable es un seudotipo introducido en PHP 7.1. Acepta cualquier array u objeto que implemente la interfaz
Traversable. Estos dos tipos se recorren con foreach.

Iterable se puede usar como tipo de parámetro para indicar que una función requiere un conjunto de valores,
pero que no importa la forma del dicho conjunto ya que se utilizará con foreach. Si un valor no es un array o
una instancia de Traversable, se lanzará un TypeError.

Ejemplo de uso de un tipo de parámetro iterable:

function foo(iterable $iterable) {


foreach ($iterable as $valor) {
// ...
}
}

1.2.7 Objetos

Para crear un nuevo object, utilice la sentencia new para instanciar una clase:

class foo
{
function hacer_algo()
{
echo "Haciendo algo.";
}
}

$bar = new foo;


$bar->hacer_algo();

Nota: Se dará una descripción más completa de Clases y Objetos en el siguiente tema.

9 Jonay García González


Sintaxis del Lenguaje PHP

1.2.8 Nulo

El valor especial NULL representa una variable sin valor. NULL es el único valor posible del tipo null.

Una variable es considerada null si:

 se le ha asignado la constante NULL.


 no se le ha asignado un valor todavía.
 se ha destruido con unset().

Ejemplo de asignación del valor NULL a una variable:

$var = NULL;

1.2.8.1 Función is_null()

La función is_null() comprueba si una variable es NULL y devuelve TRUE o FALSE.

A continuación, un ejemplo de uso de la función is_null():

$variable = NULL;
if (is_null($variable)) {

}
else {

}

1.2.8.2 Función unset()

La función unset() destruye una variable especificada.

A continuación, un ejemplo de uso de la función unset():

10 Jonay García González


Sintaxis del Lenguaje PHP

$variable1 = "valor1";
$variable2 = "valor2";
$variable3 = "valor3";
var_dump ($variable1, $variable2, $variable3);

unset($variable1, $variable2, $variable3);


var_dump ($variable1, $variable2, $variable3);

La salida del ejemplo anterior sería:

integer integer integer


NULL NULL NULL

1.3. Variables

1.3.1 Conceptos básicos

En PHP las variables se representan con un signo de dólar seguido por el nombre de la variable. El nombre
de la variable es sensible a minúsculas y mayúsculas.

Los nombres de 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. Como expresión regular se podría expresar como: '[a-zA-Z_\x7f-
\xff][a-zA-Z0-9_\x7f-\xff]*'

Ejemplo de declaración de variables:

$var = 'Roberto';
$Var = 'Juan';
echo "$var, $Var"; // imprime "Roberto, Juan"

$4site = 'aun no'; // inválido; comienza con un número


$_4site = 'aun no'; // válido; comienza con un carácter de subrayado
$täyte = 'mansikka'; // válido; 'ä' es ASCII (Extendido) 228

11 Jonay García González


Sintaxis del Lenguaje PHP

PHP también ofrece otra forma de asignar valores a las variables: asignar por referencia. Esto significa que la
nueva variable simplemente referencia (en otras palabras, "se convierte en un alias de" ó "apunta a") la
variable original. Los cambios a la nueva variable afectan a la original, y viceversa.

Para asignar por referencia, simplemente se antepone un signo ampersand (&) al comienzo de la variable
cuyo valor se está asignando (la variable fuente).

Ejemplo de asignación de un valor a una variable por referencia:

$foo = 'Bob'; // Asigna el valor 'Bob' a $foo


$bar = &$foo; // Referenciar $foo vía $bar.
$bar = "Mi nombre es $bar"; // Modifica $bar...
echo $bar;
echo $foo; // $foo también se modifica.

La salida del ejemplo anterior sería:

Mi nombre es Bob

1.3.2 Ámbito de las variables

El ámbito de una variable es el contexto dentro del que la variable está definida. La mayor parte de las
variables PHP sólo tienen un ámbito simple. Este ámbito simple también abarca los ficheros incluídos y los
requeridos. Por ejemplo:

$a = 1;
include 'b.inc';

Aquí, la variable $a estará disponible al interior del script incluido b.inc. Sin embargo, al interior de las
funciones definidas por el usuario se introduce un ámbito local a la función. Cualquier variable usada dentro
de una función está, por omisión, limitada al ámbito local de la función. Por ejemplo:

$a = 1; /* ámbito global */

function test()
{
echo $a; /* referencia a una variable del ámbito local */
}

test();

12 Jonay García González


Sintaxis del Lenguaje PHP

Este script no producirá salida, ya que la sentencia echo utiliza una versión local de la variable $a, a la que no
se ha asignado ningún valor en su ámbito.

1.3.2.1 La palabra clave global

En PHP, dentro de una función, solamente existen las variables que hayamos creado dentro de la función. En
PHP, las variables declaradas externamente a una función son globales y las creadas en una función son
locales. No obstante, PHP permite especificar las variables que están declaradas fuera de la función y que
queremos usar dentro de la misma utilizando la palabra global, de esa manera, las variables estarán
disponibles para su uso dentro de la función:

$a = 1;
$b = 2;

function Suma()
{
global $a, $b;
$b = $a + $b;
}

Suma();
echo $b;
?>

El script anterior producirá la salida 3. Al declarar $a y $b globales dentro de la función, todas las referencias
a tales variables se referirán a la versión global. No hay límite al número de variables globales que se pueden
manipular dentro de una función.

1.3.2.2 Variables static

Otra característica importante del ámbito de las variables es la variable estática. Una variable estática existe
sólo en el ámbito local de la función, pero no pierde su valor cuando la ejecución del programa abandona
este ámbito. Consideremos el siguiente ejemplo:

function test()
{
$a = 0;
echo $a;
$a++;
}

Esta función tiene poca utilidad ya que cada vez que es llamada asigna a $a el valor 0 e imprime un 0. La
sentencia $a++, que incrementa la variable, no sirve para nada, ya que en cuanto la función finaliza, la

13 Jonay García González


Sintaxis del Lenguaje PHP

variable $a desaparece. Para hacer una función útil para contar, que no pierda la pista del valor actual del
conteo, la variable $a debe declararse como estática:

function test()
{
static $a = 0;
echo $a;
$a++;
}

Ahora, $a se inicializa únicamente en la primera llamada a la función, y cada vez que la función test() es
llamada, imprimirá el valor de $a y lo incrementa.

1.3.3 Variables variables

A veces es conveniente tener nombres de variables variables. Dicho de otro modo, son nombres de variables
que se pueden definir y usar dinámicamente. Una variable normal se establece con una sentencia como:

$a = 'hola';

Una variable variable toma el valor de una variable y lo trata como el nombre de una variable. En el ejemplo
anterior, hola, se puede usar como el nombre de una variable utilizando dos signos de dólar. Es decir:

$$a = 'mundo';

En este momento se han definido y almacenado dos variables en el árbol de símbolos de PHP: $a, que
contiene "hola", y $hola, que contiene "mundo".

1.3.4 Variables desde fuentes externas

1.3.4.1 Formularios HTML (GET y POST)

Cuando se envía un formulario a un script de PHP, la información de dicho formulario pasa a estar
automáticamente disponible en el script. Existen algunas formas de acceder a esta información, por ejemplo:

Ejemplo de un formulario sencillo:


<form action="foo.php" method="post">
Nombre usuario: <input type="text" name="username" /><br />
Email: <input type="text" name="email" /><br />

14 Jonay García González


Sintaxis del Lenguaje PHP
<input type="submit" name="submit" value="¡Enviarme!" />
</form>

A partir de PHP 5.4.0, solamente existen dos maneras de acceder a datos desde formularios HTML. Los
métodos disponibles actualmente se enumeran a continuación:

Acceso a datos de un formulario HTML sencillo con POST desde el fichero foo.php:

echo $_POST['username'];
echo $_POST['email'];

El mismo ejemplo anterior utilizando GET en vez de POST:

<form action="foo.php" method="get">


Nombre usuario: <input type="text" name="username" /><br />
Email: <input type="text" name="email" /><br />
<input type="submit" name="submit" value="¡Enviarme!" />
</form>

Acceso a datos de un formulario HTML sencillo con GET desde el fichero foo.php:

echo $_GET['username'];
echo $_GET['email'];

1.3.5 Variables predefinidas (TODO)

Sin texto

1.4. Constantes

Se puede definir una constante usando la función define() o con la palabra reservada const fuera de la
definición de una clase a partir PHP 5.3.0. Una vez que la constante está definida, no puede ser cambiada o
redifinida.

Antes de PHP 5.6, al emplear la palabra reservada const, solamente los datos escalares (boolean, integer,
float y string) pueder estar contenidos en constante. Desde PHP 5.6 en adelante, es posible definir una
constante como una expresión escalar, y también es posible definir un array constante.

15 Jonay García González


Sintaxis del Lenguaje PHP

Para obtener el valor de una constante solo es necesario especificar su nombre. A diferencia de las variables,
no se debe prefijar una constante con el signo $.

Ejemplo de definición de constantes usando la función define():

define("CONSTANTE", "Hola mundo.");


echo CONSTANTE; // muestra "Hola mundo."

Ejemplo de definición de constantes usando la función const (funciona a partir de PHP 5.3.0):

const CONSTANTE = 'Hola Mundo';


echo CONSTANTE; // muestra "Hola mundo."

Ejemplo de definición de un array como constante (funciona a partir de PHP 7):

define('ANIMALES', array(
'perro',
'gato',
'pájaro'
));

echo ANIMALES[1]; // muestra "gato"

Nota: A diferencia de definir constantes usando define(), las constantes definidas con la palabra clave const
deben declararse en el nivel superior del entorno de la aplicación porque se definen en tiempo de ejecución.
Esto significa que no pueden declararse dentro de funciones, bucles, sentencias if o bloques try/ catch.

1.4.1 Constantes predefinidas

PHP ofrece un gran número de constantes predefinidas a cualquier script en ejecución. Muchas de estas
constantes, sin embargo, son creadas por diferentes extensiones, y sólo estarán presentes si dichas
extensiones están disponibles, bien por carga dinámica o porque han sido compiladas.

Hay nueve constantes mágicas que cambian dependiendo de dónde se emplean. Por ejemplo, el valor de
__LINE__ depende de la línea en que se use en el script. Estas constantes especiales son sensibles a
mayúsculas.

16 Jonay García González


Sintaxis del Lenguaje PHP
A continuación, se muestra el listado de constantes predefinidas en PHP:

Nombre Descripción
__LINE__ El número de la línea actual del fichero.
__FILE__ Ruta completa y nombre del fichero con enlaces simbólicos resueltos. Si se usa dentro
de un include, devolverá el nombre del fichero incluido.
__DIR__ Directorio del fichero. Si se utiliza dentro de un include, devolverá el directorio de
fichero incluido. Esta constante es igual que dirname(__FILE__). El nombre del
directorio no lleva la barra final a no ser que esté en el directorio root.
__FUNCTION__ Nombre de la función.
__CLASS__ Nombre de la clase. El nombre de la clase incluye el namespace declarado.
__TRAIT__ El nombre del trait. El nombre del trait incluye el espacio de nombres en el que fue
declarado.
__METHOD__ Nombre del método de la clase.
__NAMESPACE__ Nombre del espacio de nombres actual.
ClassName::class El nombre de clase completamente cualificado.

1.5. Operadores (TODO)

1.5.1 Precedencia de operadores

La precedencia de un operador indica qué tan "estrechamente" se unen dos expresiones juntas. Por ejemplo,
en la expresión 1 + 5 * 3, la respuesta es 16 y no 18 porque el operador de multiplicación ("*") tiene una
precedencia mayor que el operador de adición ("+"). Los paréntesis pueden ser usados para forzar la
precedencia, si es necesario. Por ejemplo: (1 + 5) * 3 se evalúa como 18.

Cuando los operadores tienen igual precedencia su asociatividad decide cómo se agrupan. Por ejemplo "-"
tiene asociatividad a izquierda, así 1 - 2 - 3 se agrupa como (1 - 2) - 3 y se evalúa a -4. "=", por otra parte,
tiene asociatividad a derecha, así $a = $b = $c se agrupa como $a = ($b = $c).

Los operadores de igual precedencia que no son asociativos no pueden usarse unos junto a otros, por
ejemplo, 1 < 2 > 1 es ilegal en PHP.

El uso de paréntesis, incluso cuando no es estrictamente necesario, a menudo puede aumentar la legibilidad
del código haciendo grupos explícitamente en lugar de confiar en la precedencia y asociatividad implícitas
del operador.

La siguiente tabla enumera los operadores en orden de precedencia, con los de más alta precedencia al inicio.
Los operadores en la misma línea tienen igual precedencia, en cuyo caso la asociatividad decide el
agrupamiento.

17 Jonay García González


Sintaxis del Lenguaje PHP

Asociatividad Operadores Información adicional


no asociativo clone new clone and new
izquierda [ array()
derecha ** aritmética
derecha ++ -- ~(int) (float) (string) (array) (object) (bool) @ tipos e incremento/decremento
no asociativo instanceof tipos
izquierda */% aritmética
izquierda +-. aritmética y string
izquierda << >> bit a bit
no asociativo < >= > >= comparación
no asociativo == ¡= === ¡== <> <=> comparación
izquierda & bit a bit y referencias
izquierda ^ bit a bit
izquierda / bit a bit
izquierda && lógico
izquierda // lógico
derecha ?? comparación
izquierda ?: ternario
derecha = += -= *= **= /= .= %= &= /= ^= <<= >>= asignación
izquierda and lógico
izquierda xor lógico
izquierda or lógico

Ejemplo de asociatividad:

$a = 3 * 3 % 5; // (3 * 3) % 5 = 4
// la asociatividad del operador ternario difiere de C/C++
$a = true ? 0 : true ? 1 : 2; // (true ? 0 : true) ? 1 : 2 = 2

$a = 1;
$b = 2;
$a = $b += 3; // $a = ($b += 3) -> $a = 5, $b = 5

La precedencia y asociatividad de los operadores solamente determinan cómo se agrupan las expresiones,
no especifican un orden de evaluación. PHP no especifica (en general) el orden en que se evalúa una
expresión y se debería evitar el código que se asume un orden específico de evaluación, ya que el
comportamiento puede cambiar entre versiones de PHP o dependiendo de código circundante.

Ejemplo de orden de evaluación no definido:

$a = 1;

18 Jonay García González


Sintaxis del Lenguaje PHP
echo $a + $a++; // podría mostrar 2 o 3

$i = 1;
$array[$i] = $i++; // podría establecer el índice a 1 o 2

1.5.2 Operadores aritméticos

A continuación, se muestra un listado de operadores aritméticos:

Ejemplo Nombre Resultado


+$a Identidad Conversión de $a a int o float según el caso.
-$a Negación Opuesto de $a.
$a + $b Adición Suma de $a y $b.
$a - $b Sustracción Diferencia de $a y $b.
$a * $b Multiplicación Producto de $a y $b.
$a / $b División Cociente de $a y $b.
$a % $b Módulo Resto de $a dividido por $b.
$a ** $b Exponenciación Resultado de elevar $a a la potencia $bésima.

El operador de división ("/") devuelve un valor flotante a menos que los dos operandos sean integers (o
strings que se conviertan a integers) y los números sean divisibles, en cuyo caso será devuelto un valor
integer.

El resultado del operador módulo % tiene el mismo signo que el dividendo, es decir, el resultado de $a % $b
tendrá el mismo signo que $a. Por ejemplo:

echo (5 % 3)."\n"; // muestra 2


echo (5 % -3)."\n"; // muestra 2
echo (-5 % 3)."\n"; // muestra -2
echo (-5 % -3)."\n"; // muestra -2

1.5.3 Operadores de asignación

El operador básico de asignación es "=". Se podría inclinar a pensar primero que es como un "igual a". No lo
es. Realmente significa que el operando de la izquierda se establece con el valor de la expresión de la derecha
(es decir, "se define como").

El valor de una expresión de asignación es el valor asignado. Es decir, el valor de "$a = 3" es de 3:

$a = ($b = 4) + 5; // ahora $a es igual a 9 y $b se ha establecido en 4.

19 Jonay García González


Sintaxis del Lenguaje PHP

Además del operador básico de asignación, existen «operadores combinados» para todos los de aritmética
binaria, unión de arrays y operadores de strings que permiten usar un valor en una expresión y entonces
establecer su valor como el resultado de esa expresión. Por ejemplo:

$a = 3;
$a += 5; // establece $a en 8, como si se hubiera dicho: $a = $a + 5;
$b = "Hola ";
$b .= "ahí!"; // establece $b en "Hola ahí!", al igual que $b = $b . "ahí!";

1.5.4 Operadores de comparación

Los operadores de comparación, como su nombre indica, permiten comparar dos valores:

Ejemplo Nombre Resultado


$a == $b Igual TRUE si $a es igual a $b después de la manipulación de tipos.
$a === $b Idéntico TRUE si $a es igual a $b y son del mismo tipo.
$a != $b Diferente TRUE si $a no es igual a $b después de la manipulación de tipos.
$a <> $b Diferente TRUE si $a no es giaul a $b después de la manipulación de tipos.
$a !== $b No idéntico TRUE si $a no es igual a $b, o si no son del mismo tipo.
$a < $b Menor que TRUE si $a es estrictamente menor que $b.
$a > $b Mayor que TRUE si $a es estrictamente mayor que $b.
$a <= $b Menor o igual que TRUE si $a es mayor o igual que $b.
$a <=> $b Nave espacial Un integer menor que, igual a, mayor que cero cuando $a es
respectivamente menor que, igual a, o mayor que $b.
$a ?? $b ?? $c Fusión de null El primer operando de izquierda a derecha que exista y no sea NULL.
NULL si no hay valores definidos y no son NULL.

Ejemplo de operadores de comparación:

$a = 3;
$b = 9;
$result = ($a <= 3 and $b <> 9);

if ( $result == true) {
echo "Se cumple la condición";
}else {
echo "No se cumple la condición";
}

El resultado del ejemplo anterior es:

No se cumple la condición

20 Jonay García González


Sintaxis del Lenguaje PHP

1.5.5 Operadores de incremento/decremento

PHP soporta operadores estilo C de pre-incremento y post-incremento.

Nota: Los operadores de incremento/decremento solamente afectan a números y strings. Los arrays, objects
y resources no se ven afectados. Decrementar valores NULL tampoco tiene efecto, pero incrementarlos
entonces resulta en 1.

Ejemplo Nombre Efecto


++$a Pre-incremento Incrementa $a en uno y luego retorna $a.
$a++ Post-incremento Retorna $a y luego incrementa $a en uno.
--$a Pre-decremento Decrementa $a en uno, luego retorn $a.
$a-- Post-decremento Retorna $a, luego decrementa $a en uno.

1.5.6 Operadores Lógicos

Ejemplo Nombre Resultado


$a and $b And (y) TRUE si tanto $a como $b son TRUE.
$a or $b Or (o inclusivo) TRUE si cualquiera de $a o $b es TRUE.
$a xor $b Xor (o exclusivo) TRUE si $a o $b es TRUE, pero no ambos.
!$a Not (no) TRUE si $a no es TRUE.
$a && $b And (y) TRUE si tanto $a como $b son TRUE.
$a || $b Or (o inclusivo) TRUE si cualquiera de $a o $b es TRUE.

1.6. Estructuras de Control (TODO)

Todo script PHP está construido según una serie de sentencias. Una sentencia puede ser una asignación, una
llamada de función, un ciclo, una sentencia condicional o incluso una sentencia que no hace nada (una
sentencia vacía). Las sentencias generalmente finalizan con un punto y coma. Adicionalmente, las sentencias
pueden agruparse en un conjunto de sentencias, encapsulándolas entre corchetes.

1.6.1 if / if-else / elseif

El constructor if es una de las características más importantes de muchos lenguajes, incluido PHP. Permite la
ejecución condicional de fragmentos de código. PHP dispone de una estructura if que es similar a la de C:

if (expr)

21 Jonay García González


Sintaxis del Lenguaje PHP
sentencia

Como se describe en la sección sobre expresiones, la expresión es evaluada a su valor booleano. Si la


expresión se evalúa como TRUE, PHP ejecutará la sentencia y si se evalúa como FALSE la ignorará.

El siguiente ejemplo mostraría a es mayor que b si $a es mayor que $b y entonces asignaría el valor de $a a
$b:

if ($a > $b) {


echo "a es mayor que b";
$b = $a;
}

Las sentencias if pueden anidarse dentro de otras sentencias if infinitamente, lo cual provee completa
flexibilidad para la ejecución condicional de diferentes partes del programa.

Con frecuencia se desea ejecutar una sentencia si una determinada condición se cumple y una sentencia
diferente si la condición no se cumple. Esto es para lo que sirve else. El else extiende una sentencia if para
ejecutar una sentencia en caso que la expresión en la sentencia if se evalúe como FALSE. Por ejemplo, el
siguiente código deberá mostrar “a es mayor que b” si $a es mayor que $b y a “NO es mayor que b” en el
caso contrario:

if ($a > $b) {


echo "a es mayor que b";
} else {
echo "a NO es mayor que b";
}

La sentencia else sólo es ejecutada si la expresión if es evaluada como FALSE.

elseif, como su nombre lo sugiere, es una combinación de if y else. Del mismo modo que else, extiende una
sentencia if para ejecutar una sentencia diferente en caso que la expresión if original se evalúe como FALSE.
Sin embargo, a diferencia de else, esa expresión alternativa sólo se ejecutará si la expresión condicional del
elseif se evalúa como TRUE. Por ejemplo, el siguiente código debe mostrar “a es mayor que b”, “a es igual
que b” o “a es menor que b”:

if ($a > $b) {


echo "a es mayor que b";
} elseif ($a == $b) {
echo "a es igual que b";

22 Jonay García González


Sintaxis del Lenguaje PHP
} else {
echo "a es menor que b";
}

Puede haber varios elseif dentro de la misma sentencia if. La primera expresión elseif (si hay alguna) que se
evalúe como TRUE sería ejecutada. En PHP también se puede escribir 'else if' (en dos palabras) y el
comportamiento sería idéntico al de 'elseif' (en una sola palabra).

1.6.2 while

Los bucles while son el tipo más sencillo de bucle en PHP. Se comportan igual que su contrapartida en C. La
forma básica de una sentencia while es:

while (expr)

sentencia

El significado de una sentencia while es simple. Le dice a PHP que ejecute las sentencias anidadas, tanto como
la expresión while se evalúe como TRUE. El valor de la expresión es verificado cada vez al inicio del bucle, por
lo que incluso si este valor cambia durante la ejecución de las sentencias anidadas, la ejecución no se
detendrá hasta el final de la iteración (cada vez que PHP ejecuta las sentencias contenidas en el bucle es una
iteración). A veces, si la expresión while se evalúa como FALSE desde el principio, las sentencias anidadas no
se ejecutarán ni siquiera una vez.

Al igual que con la sentencia if, se pueden agrupar varias instrucciones dentro del mismo bucle while
rodeando un grupo de sentencias con corchetes, o utilizando la sintaxis alternativa:

while (expr):
sentencias
...
endwhile;

Los siguientes ejemplos son idénticos y ambos presentan los números del 1 al 10:

$i = 1;
while ($i <= 10) {
echo $i++;
}

23 Jonay García González


Sintaxis del Lenguaje PHP
$i = 1;
while ($i <= 10):
echo $i;
$i++;
endwhile;

1.6.3 do-while

Los bucles do-while son muy similares a los bucles while, excepto que la expresión verdadera es verificada al
final de cada iteración en lugar que al principio. La diferencia principal con los bucles while es que está
garantizado que corra la primera iteración de un bucle do-while (la expresión verdadera sólo es verificada al
final de la iteración), mientras que no necesariamente va a correr con un bucle while regular (la expresión
verdadera es verificada al principio de cada iteración, si se evalúa como FALSE justo desde el comienzo, la
ejecución del bucle terminaría inmediatamente).

Hay una sola sintaxis para bucles do-while:

$i = 0;
do {
echo $i;
} while ($i > 0);

El bucle de arriba se ejecutaría exactamente una sola vez, ya que después de la primera iteración, cuando la
expresión verdadera es verificada, se evalúa como FALSE ($i no es mayor que 0) y termina la ejecución del
bucle.

1.6.4 For

Los bucles for son los más complejos en PHP. Se comportan como sus homólogos en C. La sintaxis de un bucle
for es:

for (expr1; expr2; expr3)


sentencia

La primera expresión (expr1) es evaluada (ejecutada) una vez incondicionalmente al comienzo del bucle.

En el comienzo de cada iteración, se evalúa expr2. Si se evalúa como TRUE, el bucle continúa y se ejecutan
las sentencias anidadas. Si se evalúa como FALSE, finaliza la ejecución del bucle.

Al final de cada iteración, se evalúa (ejecuta) expr3.

24 Jonay García González


Sintaxis del Lenguaje PHP

Cada una de las expresiones puede estar vacía o contener múltiples expresiones separadas por comas. En
expr2, todas las expresiones separadas por una coma son evaluadas, pero el resultado se toma de la última
parte. Que expr2 esté vacía significa que el bucle debería ser corrido indefinidamente (PHP implícitamente
lo considera como TRUE, como en C). Esto puede no ser tan inútil como se pudiera pensar, ya que muchas
veces se debe terminar el bucle usando una sentencia condicional break en lugar de utilizar la expresión
verdadera del for.

El siguiente ejemplo muestra los números del 1 al 10:

for ($i = 1; $i <= 10; $i++) {


echo $i;
}

1.7. Funciones (TODO)

Sin texto

1.8. Excepciones (TODO)

Sin Texto

25 Jonay García González

También podría gustarte