SlideShare una empresa de Scribd logo
1 de 28
Capítulo 3. Introduccion a PHP
En el Capítulo 1, expliqué que PHP es el lenguaje que usa para que el servidor genere
salida de salida dinámica que es potencialmente diferente cada vez que un navegador
solicita una página. En este capítulo, comenzarás a aprender este lenguaje simple pero
poderoso; será el tema de los siguientes capítulos hasta el Capítulo 7.
Te animo a que desarrolles tu código PHP en uno de los IDEs enumerados en el
Capítulo 2. Te ayudará a detectar errores tipográficos y acelerar el aprendizaje
tremendamente en comparación con los editores con menos funciones.
Muchos de estos entornos de desarrollo le permiten ejecutar el código PHP y ver los
resultados analizados en este capítulo. También le mostraré cómo insertar el PHP en un
archivo HTML para que pueda ver cómo se ve el resultado en una página web (la forma
en que sus usuarios finalmente lo verán). Pero ese paso, por emocionante que pueda ser
al principio, no es realmente importante en esta etapa.
En producción, sus páginas web serán una combinación de PHP, HTML y JavaScript, y
algunas declaraciones de MySQL diseñadas mediante CSS, y posiblemente utilizando
varios elementos HTML5. Además, cada página puede conducir a otras páginas para
proporcionar a los usuarios formas de hacer clic a través de enlaces y completar
formularios. Sin embargo, podemos evitar toda esa complejidad mientras aprendemos
cada idioma. ¡Enfóquese ahora solo en escribir código PHP y asegúrese de obtener el
resultado que espera, o al menos que comprenda el resultado que realmente obtiene!
Incorporando PHP Dentro de HTML
Por defecto, los documentos PHP terminan con la extensión .php. Cuando un servidor
web encuentra esta extensión en un archivo solicitado, automáticamente lo pasa al
procesador PHP. Por supuesto, los servidores web son altamente configurables, y
algunos desarrolladores web eligen forzar los archivos que terminan en .htm o .html
para que también sean analizados por el procesador PHP, generalmente porque quieren
ocultar el hecho de que están usando PHP.
Su programa PHP es responsable de devolver un archivo limpio adecuado para mostrar
en un navegador web. En su forma más simple, un documento PHP dará como resultado
solo HTML. Para probar esto, puede tomar cualquier documento HTML normal, como
un archivo index.html y guardarlo como index.php, y se mostrará de forma idéntica al
original.
Para activar los comandos de PHP, necesita aprender una nueva etiqueta. La primera
parte es:
<?php
Lo primero que notará es que la etiqueta no se ha cerrado. Esto se debe a que se pueden
colocar secciones enteras de PHP dentro de esta etiqueta, y solo finalizan cuando se
encuentra la parte de cierre, que se ve así:
?>
Un pequeño programa PHP "Hello World" podría parecerse al Ejemplo 3-1
Ejemplo 3-1. Incando PHP
<?php
echo "Hello world";
?>
La forma en que usa esta etiqueta es bastante flexible. Algunos programadores abren la
etiqueta al comienzo de un documento y la cierran al final, y generan cualquier código
HTML directamente desde los comandos de PHP.
Otros, sin embargo, optan por insertar solo los fragmentos más pequeños posibles de
PHP dentro de estas etiquetas donde sea que se requiera el uso de scripts dinámicos,
dejando el resto del documento en HTML estándar.
El último tipo de programador generalmente argumenta que su estilo de codificación
resulta en un código más rápido, mientras que el primero dice que el aumento de
velocidad es tan mínimo que no justifica la complejidad adicional de ingresar y salir de
PHP muchas veces en un solo documento.
.
A medida que aprenda más, seguramente descubrirá su estilo preferido de desarrollo
PHP, pero para hacer que los ejemplos en este libro sean más fáciles de seguir, he
adoptado el enfoque de mantener el número de transferencias entre PHP y HTML al
mínimo. generalmente solo una o dos veces en un documento.
Por cierto, hay una ligera variación en la sintaxis de PHP. Si busca ejemplos de PHP en
Internet, también puede encontrar un código donde la sintaxis de apertura y cierre se ve
así:
<?php
echo "Hello world";
?>
Aunque no es tan obvio que se llame al analizador de PHP, esta es una sintaxis
alternativa válida que también suele funcionar, pero debe desaconsejarse, ya que es
incompatible con XML y su uso ahora está en desuso (lo que significa que ya no se
recomienda y podría ser eliminado en futuras versiones).
Los Ejemplos de Este Libro
Para ahorrarle el tiempo que llevaría escribirlos todos, todos los ejemplos de este libro
se han archivado en el sitio web complementario, que puede descargar a su
NOTA
Si solo tiene código PHP en un archivo, puede omitir el cierre?>. Esta puede ser una
buena práctica,ya que asegurará que no haya un exceso de espacio en blanco que se
escapa de sus archivos PHP (especialmente importante cuando está escribiendo
código orientado a objetos).
computadora haciendo clic en el enlace Descargar ejemplos en la sección de encabezado
(consulte la Figura 3). 1).
Además de tener todos los ejemplos guardados por capítulo y número de ejemplo (como
example3-1.php), el archivo también contiene una carpeta adicional llamada
named_examples, en la que encontrará todos los ejemplos que sugiero que guarde
usando un nombre de archivo específico (como el próximo Ejemplo 3-4, que debe
guardarse como test1.php).
LA ESTRUCTURA DE PHP
Vamos a cubrir bastante terreno en esta sección. No es demasiado difícil, pero te
recomiendo que estudies cuidadosamente, ya que sienta las bases para todo lo demás en
este libro. Como siempre, hay algunas preguntas útiles al final del capítulo que puede
usar para evaluar cuánto ha aprendido.
Usando Comentarios
// This is a comment
Esta versión de la función de comentarios es una excelente manera de eliminar
temporalmente una línea de código de un programa que le está dando errores. Por
ejemplo, podría usar dicho comentario para ocultar una línea de código de depuración
hasta que lo necesite, así:
// echo "X equals $x";
También puede usar este tipo de comentario directamente después de una línea de
código para describir su acción, como esta:
$x += 10; // Increment $x by 10
Cuando necesita comentarios de varias líneas, hay un segundo tipo de comentario, que
se parece a
Ejemplo 3.2
Example 3-2. Comentario Multilineas
<?php
/* This is a section
of multiline comments
which will not be
interpreted */
?>
Puede usar los pares de caracteres * * y * / para abrir y cerrar comentarios en casi
cualquier lugar que desee dentro de su código. La mayoría, si no todos, los
programadores usan esta construcción para comentar temporalmente secciones enteras
de código que no funcionan o que, por una razón u otra, no desean ser interpretadas.
Sintaxis Basica
PHP es un lenguaje bastante simple con raíces en C y Perl, pero se parece más a Java.
También es muy flexible, pero hay algunas reglas que debes aprender sobre su sintaxis
y estructura.
Punto y Coma
Es posible que haya notado en los ejemplos anteriores que los comandos PHP
terminaron con un punto y coma, como este:
$x += 10;
Probablemente la causa más común de errores que encontrará con PHP sea olvidando
este punto y coma. Esto hace que PHP trate múltiples enunciados como una declaración,
que no puede entender, lo que le lleva a producir un mensaje de error de Parse. (Parse
Error)
El Simbolo $
El símbolo $ ha llegado a ser utilizado de diferentes maneras por diferentes lenguajes de
programación. Por ejemplo, si alguna vez ha escrito en el lenguaje BASIC, habrá usado
los $ para terminar nombres de variables para denotarlos como cadenas.
Advertencia
Un error común es usar / * y * / para comentar una gran sección de código que ya
contiene una sección comentada que usa esos caracteres. No puedes anidar los
comentarios de esta manera; el intérprete de PHP no sabrá dónde termina un
comentario y mostrará un mensaje de error. Sin embargo, si utiliza un editor de
programa o IDE con resaltado de sintaxis, este tipo de error es más fácil de
detectar.
En PHP, sin embargo, debe colocar un $ en frente de todas las variables. Esto es
necesario para hacer que el analizador de PHP sea más rápido, ya que lo sabe al instante
cuando se encuentra con una variable. Independientemente de que sus variables sean
números, cadenas o matrices, todas deberían ser similares a las del ejemplo 3-3.
Example 3-3. Tres diferentes formas de asignacion de un typo de variable
<?php
$mycounter = 1;
$mystring = "Hello";
$myarray = array("One", "Two", "Three");
?>
Y realmente esa es prácticamente toda la sintaxis que debes recordar. A diferencia de
otros lenguajes que son muy estrictos sobre cómo sangrar y diseñar su código (por
ejemplo, Python), PHP le deja completamente libre de usar (o no usar) todo el sangrado
y espaciado que desee. De hecho, generalmente se recomienda el uso razonable de
espacios en blanco (junto con comentarios exhaustivos) para ayudarlo a comprender su
código cuando vuelva a utilizarlo. También ayuda a otros programadores cuando tienen
que mantener su código.
Variables
Hay una metáfora simple que te ayudará a entender de qué se tratan las variables de
PHP. ¡Solo piense en ellos como cajas de fosforos pequeñas (o grandes)! Así es, cajas
de fósforos sobre las que has pintado y nombres escritos.
Las comillas indican que "Fred Smith" es una cadena de caracteres. Debe encerrar cada
cadena entre comillas o apóstrofes (comillas simples), aunque hay una sutil diferencia
entre los dos tipos de comillas, que se explica más adelante. Cuando desee ver lo que
hay en la caja, ábralo, sáquelo y léelo. En PHP, hacerlo así se ve así:
echo $username;
O puede asignarlo a otra variable (fotocopie el documento y coloque la copia en otra
caja de cerillas), como este:
$current_user = $username;
Si desea probar PHP por su cuenta, intente introducir los ejemplos de este capítulo
en un IDE (como se recomienda al final del Capítulo 2) para ver resultados
instantáneos, o puede ingresar el código en el Ejemplo 3-4. en un editor de
programas y guárdelo en el directorio raíz de documentos de su servidor (también
discutido en el Capítulo 2) como test1.php.
Ejemplo 3-4. Tu primer Programa en________________________________________
<?php // test1.php
$username = "Fred Smith";
echo $username;
echo "<br>";
$current_user = $username;
echo $current_user;
?>
Ahora puede llamarlo ingresando lo siguiente en la barra de direcciones de su
navegador
:http://localhost/test1.php
El resultado de ejecutar este código debería ser dos apariciones del nombre "Fred
Smith", el primero de los cuales es el resultado del comando echo $username, y el
segundo del comando echo
$current_user command.
Variables Numericas
Las variables no contienen solo caracteres; también pueden contener números.
Si volvemos a la analogía de la caja de cerillas, para almacenar el número 17 en la
variable $count, el equivalente sería colocar, por ejemplo, 17, cuentas en una caja de
fósforos en la que ha escrito la palabra count:
$count = 17;
Tambien puedes usar números de punto-flotante, (contienen puntos decimales); la
sintaxis serial la misma
NOTA
Si durante la instalación de su servidor web (como se detalla en el Capítulo 2) cambió el
puerto asignado al servidor a algo más que 80, entonces debe colocar ese número de puerto
dentro de la URL en este y en todos los demás ejemplos de este libro. Entonces, por ejemplo,
si cambió el puerto a 8080, la URL precedente se convierte en:
http: // localhost: 8080 / test1.php
No mencionaré esto nuevamente, así que recuerde usar el número de puerto si es necesario al
probar algún ejemplo o escribir su propio código.
$count = 17.5;
Para leer el contenido de la caja de cerillas, simplemente la abre y cuenta las cuentas. En
PHP, asignaría el valor de $ count a otra variable o tal vez simplemente lo haga eco en
el navegador web.
Arrays – (Arreglos)(Matrices)
Entonces, ¿qué son las matrices? Bueno, puedes pensar en ellos como varias
cajas de cerillas pegadas. Por ejemplo, digamos que queremos almacenar los nombres
de jugador para un equipo de fútbol de cinco personas en una matriz llamada $team.
Para hacer esto, podríamos pegar cinco cajas de fósforos uno al lado del otro y anotar
los nombres de todos los jugadores en trozos de papel separados, colocando uno en cada
caja de fósforos.
En toda la parte superior del ensamblaje de la caja de cerillas, escribiríamos la palabra
equipo (ver Figura 3-3). El equivalente de esto en PHP sería:
$team = array('Bill', 'Mary', 'Mike', 'Chris', 'Anne');
Esta sintaxis es más complicada que las que he explicado hasta ahora. El código de
construcción de matriz consiste en la siguiente construcción:
array();
Con cinco Caracteres Dentro. Cada character queda encerrado entre los apostrofes
Si quisiéramos saber quién es el jugador 4, podríamos usar este comando:
echo $team[3]; // Se mostrara el Nombre de Chris
La razón por la cual el enunciado anterior tiene el número 3, no el 4, se debe a que el
primer elemento de un conjunto de PHP es en realidad el elemento 0, por lo que los
números del jugador serán de 0 a 4.
Matrices de dos Dimensiones
Hay mucho más que puedes hacer con las matrices. Por ejemplo, en lugar de ser líneas
unidimensionales de cajas de cerillas, pueden ser matrices bidimensionales o incluso
pueden tener tres o más dimensiones.
Como ejemplo de una matriz bidimensional, digamos que queremos hacer un
seguimiento de un juego de tres en raya, que requiere una estructura de datos de nueve
celdas dispuestas en un cuadrado de 3 × 3. Para representar esto con cajas de cerillas,
imagine que nueve de ellas se pegan entre sí en una matriz de tres filas por tres
columnas (consulte la Figura 3-4).
Ahora puede colocar un trozo de papel con una "x" o una "o" en la casilla de cerillas
correcta para cada jugada jugada. Para hacer esto en código PHP, debe configurar una
matriz que contenga tres matrices más, como en el Ejemplo 3-5, en el que la matriz está
configurada con un juego que ya está en progreso.
Example 3-5. Definiendo una matriz de dos dimensiones
<?php
$oxo = array(array('x', ' ', 'o'),
array('o', 'o', 'x'),
array('x', 'o', ' '));
?>
Una vez más, hemos avanzado un paso en la complejidad, pero es fácil de entender si
tiene una comprensión de la sintaxis básica de la matriz. Hay tres construcciones array
() anidadas dentro de la construcción de la matriz externa ().
Para luego devolver el tercer elemento en la segunda fila de esta matriz, usaría el
siguiente comando PHP, que mostrará una x:
echo $oxo[1][2];
Como se mencionó, podemos admitir matrices con aún más dimensiones simplemente
creando más matrices dentro de las matrices. Sin embargo, no cubriremos arreglos de
más de dos dimensiones en este libro.
Y no se preocupe si todavía tiene dificultades para entender las matrices, ya que el tema
se explica en detalle en el Capítulo 6.
Reglas para nombrar(declarar) variables
Al crear variables de PHP, debe seguir estas cuatro reglas:
 Los nombres de las variables deben comenzar con una letra del alfabeto o el
carácter _ (guión bajo).
 Los nombres de las variables solo pueden contener los caracteres a-z, A-Z, 0-9 y
_ (guion bajo).
 Los nombres de las variables no pueden contener espacios. Si una variable debe
comprender más de una palabra, debe separarse con el carácter _ (guión bajo)
(por ejemplo, $ nombre_usuario).
 Los nombres de las variables distinguen mayúsculas de minúsculas. La variable
$High_Score no es lo mismo que la variable $high_score.
Operadores
Los operadores son los comandos matemáticos, de caracteres, de comparación y
lógicos, como más, menos, multiplicar y dividir. PHP se parece mucho a la aritmética
simple; por ejemplo, la siguiente declaración produce 8:
NOTA
Recuerde que los índices de matriz (punteros en elementos dentro de una matriz)
comienzan desde cero, no uno, por lo que [1] en el comando anterior se refiere a la
segunda de las tres matrices, y [2] hace referencia a la tercera posición dentro de esa
matriz. Devolverá el contenido de la caja de cerillas tres a lo largo y dos abajo.
NOTA
Para permitir caracteres ASCII extendidos que incluyen acentos, PHP también
admite bytes de 127 a 255 en nombres de variables. Pero a menos que su código sea
mantenido solo por programadores que estén familiarizados con esos personajes,
probablemente sea mejor evitarlos, porque los programadores que usan teclados en
inglés tendrán dificultades para acceder a ellos.
echo 6 + 2;
Antes de continuar para saber lo que PHP puede hacer por usted, tómese un momento
para aprender sobre los diversos operadores que ofrece.
Operadores Aritmeticos
Los operadores aritméticos hacen lo que cabría esperar. Se usan para realizar
matemáticas. Puede usarlos para las cuatro operaciones principales (más, menos,
multiplicar y dividir), así como para encontrar un módulo (el resto después de una
división) y para incrementar o disminuir un valor (consulte la Tabla 3-1).
Table 3-1. Operadores Aritmeticos
Operator Descripcion Ejemplo
+
Suma
$j + 1
−
Resta
$j − 6
*
Multiplicación
$j * 11
/
Division
$j / 4
%
Modulus (Resto de la División)
$j % 9
++
Incrementar 1
++$j
−−
Decrement 1
−−$j
Operadores de Asignación
Estos operadores se utilizan para asignar valores a las variables. Comienzan con el muy
simple = y avanzan a + =, - =, y así sucesivamente (vea la Tabla 3-2). El operador + =
agrega el valor en el lado derecho a la variable de la izquierda, en lugar de reemplazar
totalmente el valor de la izquierda. Por lo tanto, si $ count comienza con el valor 5, la
instrucción:
$count += 1;
establece $ count to 6, al igual que la declaración de asignación más familiar:
$count = $count + 1;
Las cadenas tienen su propio operador, el período (.), Detallado en la sección
Concatenación de cadenas
Tabla 3-2. Operadores de Asignación
Operator Ejemplo Equivalente a:
= $j = 15 $j = 15
+= $j += 5 $j = $j + 5
−= $j −= 3 $j = $j − 3
*= $j *= 8 $j = $j * 8
/= $j /= 16 $j = $j / 16
.= $j .= $k $j = $j . $k
%= $j %= 4 $j = $j % 4
Operadores de Comparación
Los operadores de comparación generalmente se usan dentro de una construcción, como
una declaración if en la que debe comparar dos elementos. Por ejemplo, puede desear
saber si una variable que ha incrementado ha alcanzado un valor específico, o si otra
variable es menor que un valor establecido, y así sucesivamente (consulte la Tabla 3-3).
Tenga en cuenta la diferencia entre = y ==. El primero es un operador de asignación, y
el segundo es un operador de comparación. Incluso los programadores más avanzados a
veces pueden transponer los dos cuando codifican apresuradamente, así que ten
cuidado.
. Table 3-3. Comparison operators
Operator Description Example
== Es igual a $j == 4
!= No es igual a $j != 21
> Es mayor que $j > 3
< Es menor que $j < 100
>= Es mayor o igual a $j >= 15
<= Es menor o igual a $j <= 8
Operadores Logicos
Si no los ha usado antes, los operadores lógicos pueden parecer un poco desalentadores
al principio. Pero solo piensa en ellos de la misma forma que usarías la lógica en inglés.
Por ejemplo, podría decirse a sí mismo: "Si es la hora posterior a las 12 p.m. y antes de
las 2 p.m., luego almorzar. "En PHP, el código para esto podría parecerse a lo siguiente
(usando tiempo militar):
if ($hour > 12 && $hour < 14) dolunch();
Aquí hemos trasladado el conjunto de instrucciones para ir al almuerzo a una función
que luego tendremos que crear llamada dolunch. El entonces de la declaración queda
fuera, porque está implícito y, por lo tanto, es innecesario.
Como muestra el ejemplo anterior, generalmente utiliza un operador lógico para
combinar los resultados de dos de los operadores de comparación que se muestran en la
sección anterior. También se puede ingresar un operador lógico a otro operador lógico
("Si la hora es posterior a las 12 p.m. y antes de las 2 p.m., o si el olor de un asado está
impregnando el pasillo y hay placas en la mesa"). Como regla general, si algo tiene un
valor VERDADERO o FALSO, se puede ingresar a un operador lógico. Un operador
lógico toma dos entradas verdaderas o falsas y produce un resultado verdadero o falso.
Tabla 3-4 Operadores Logicos
Table 3-4. Logical operators
Operador Descripción Ejemplo
&& And (y) $j == 3 && $k == 2
and Baja precedencia and (y) $j == 3 and $k == 2
|| Or (o) $j < 5 || $j > 10
or Baja Precedencia or (o ) $j < 5 or $j > 10
! Not (no) ! ($j == $k)
xor Exclusive or (o excluye) $j xor $k
Tenga en cuenta que && suele ser intercambiable con y; lo mismo es cierto para || y o
Pero y y o tienen una precedencia más baja, por lo que en algunos casos, puede
necesitar paréntesis adicionales para forzar la precedencia requerida. Por otro lado, hay
momentos en los que solo y o es aceptable, como en la siguiente declaración, que utiliza
un operador or (que se explicará en el Capítulo 10):
mysql_select_db($database) or die("Unable to select database");
El más inusual de estos operadores es xor, que significa exclusivo o y devuelve un valor
VERDADERO si cualquier valor es VERDADERO, pero un valor FALSO si ambas
entradas son VERDADERAS o ambas entradas son FALSAS. Para entender esto,
imagina que quieres preparar tu propio limpiador para artículos para el hogar. El
amoníaco es un buen limpiador, al igual que el blanqueador, por lo que desea que su
limpiador tenga uno de amoniaco que sea un buen limpiador, y también blanqueador,
por lo que desea que su limpiadora tenga uno de estos. Pero el limpiador no debe tener
ambos, porque la combinación es peligrosa. En PHP, podrías representar esto como:
$ingredient = $ammonia xor $bleach;
En el fragmento de ejemplo, si $ammonia o $bleach es TRUE, $ingredient
también se establecerá en TRUE. Pero si ambos son VERDADEROS o ambos son
FALSOS, $ingredient se establecerá en FALSO.
Asignación de Variables
La sintaxis para asignar un valor a una variable siempre es variable = valor. O,
para reasignar el valor a otra variable, es otra variable = variable.
También hay un par de otros operadores de asignación que le serán útiles. Por ejemplo,
ya hemos visto:
$x += 10;
que le dice al analizador PHP que agregue el valor a la derecha (en este caso, el valor
10) a la variable $x. Del mismo modo, podríamos restar de la siguiente manera:
$y −= 10;
Incrementando y Decrementando Variables
Agregar o restar 1 es una operación tan común que PHP proporciona operadores
especiales para ello. Puede usar uno de los siguientes en lugar de los operadores + = y -
=:
++$x;
−−$y;
Junto con una prueba (una declaración if), puede usar el siguiente código:
if (++$x == 10) echo $x;
Esto le dice a PHP que primero incremente el valor de $ x y luego pruebe si tiene el
valor 10; si lo hace, muestra su valor. Pero también puede requerir que PHP incremente
(o, en el siguiente ejemplo, reduzca) una variable después de que haya probado el valor,
así:
if ($y−− == 0) echo $y;
que da un resultado sutilmente diferente. Supongamos que $ y comienza como 0 antes
de que se ejecute la instrucción. La comparación arrojará un resultado VERDADERO,
pero $ y se establecerá en -1 después de realizar la comparación. Entonces, ¿qué
mostrará la declaración de echo: 0 o -1? Intenta adivinar, y luego prueba la declaración
en un procesador PHP para confirmar. Debido a que esta combinación de afirmaciones
es confusa, debe tomarse como solo un ejemplo educativo y no como una guía para un
buen estilo de programación.
En resumen, si una variable se incrementa o decrementa antes o después de la prueba
depende de si el operador de incremento o decremento se coloca antes o después de la
variable.
Por cierto, la respuesta correcta a la pregunta anterior es que la instrucción echo
mostrará el resultado -1, porque $ y se redujo inmediatamente después de que se
accedió en la instrucción if y antes de la instrucción echo.
Concatenación de Caracteres
La concatenación de cadenas usa el punto (.) Para agregar una cadena de caracteres a
otra. La forma más sencilla de hacerlo es la siguiente:
echo "You have " . $msgs . " messages.";
asumiendo la variable $msgs tiene un valor de 5, la salida de esta linea de codigo seria.
You have 5 messages.
Del mismo modo que puede agregar un valor a una variable numérica con el operador +
=, puede agregar una cadena a otra utilizando. = Como este:
$bulletin .= $newsflash;
En este caso, si $bulletin contiene un boletín de noticias y $newsflash tiene un
flash de noticias, el comando agrega el flash de noticias al boletín de noticias de modo
que $bulletin ahora incluye ambas cadenas de texto.
Tipos de Cadenas de Caracteres o Tipos de Strings
PHP admite dos tipos de cadenas que se denotan por el tipo de comillas que utiliza. Si
desea asignar una cadena literal, preservando el contenido exacto, debe usar las comillas
simples (apóstrofo) como esta:
$info = 'Preface variables with a $ like this: $variable';
En este caso, cada carácter dentro de la cadena de una sola cita se asigna a $info. Si
hubiera utilizado comillas dobles, PHP habría intentado evaluar $variable como una
variable.
Por otro lado, cuando desee incluir el valor de una variable dentro de una cadena,
hágalo utilizando cadenas de comillas dobles:
echo "This week $count people have viewed your profile";
Como comprenderá, esta sintaxis también ofrece una forma más simple de
concatenación en la que no necesita usar un punto, o cerrar y volver a abrir citas, para
agregar una cadena a otra. Esto se llama sustitución de variables, y notará que algunas
aplicaciones lo usan extensamente y otras no lo usan en absoluto.
Caracteres de Escape
Algunas veces, una cadena necesita contener caracteres con significados especiales que
puedan interpretarse incorrectamente. Por ejemplo, la siguiente línea de código no
funcionará, porque la segunda comilla encontrada en la ortografía de la palabra le dirá al
analizador de PHP que se ha alcanzado el final de la cadena. En consecuencia, el resto
de la línea se rechazará como un error:
$text = 'My spelling's atroshus'; // Erroneous syntax
Para corregir esto, puede agregar una barra invertida directamente antes de la comilla
ofensiva para decirle a PHP que trate el carácter literalmente y no lo interprete:
$text = 'My spelling's still atroshus';
Y puede realizar este truco en casi todas las situaciones en las que PHP de lo contrario
devolvería un error al tratar de interpretar un personaje. Por ejemplo, la siguiente cadena
de doble cita se asignará correctamente:
$text = "She wrote upon it, "Return to sender".";
Además, puede usar caracteres de escape para insertar varios caracteres especiales en
cadenas tales como pestañas, nuevas líneas y retornos de carro. Estos están
representados, como podría adivinar, por  t,  n y  r. Aquí hay un ejemplo que usa
pestañas para diseñar un encabezado; se incluye aquí simplemente para ilustrar los
escapes, porque en las páginas web siempre hay mejores formas de hacer el diseño:
$heading = "DatetNametPayment";
Estos caracteres especiales precedidos de barra invertida solo funcionan en cadenas de
comillas dobles. En cadenas de comillas simples, la cadena anterior se mostraría con las
secuencias feas  t en lugar de las pestañas. Dentro de las cadenas entre comillas
simples, solo el apóstrofo escapado ( ') y la barra inversa escapada () se reconocen
como caracteres escapados.
Lineas de Multiples Comandos (Instrucciones)
Hay momentos en los que necesita generar bastante texto desde PHP, y usar varias
declaraciones de echo (o print) sería lento y complicado. Para superar esto, PHP
ofrece dos comodidades. El primero es simplemente poner múltiples líneas entre
comillas, como en el Ejemplo 3-6. Las variables también se pueden asignar, como en el
Ejemplo 3-7.
Ejemplo 3-6. Una Cadena de caracteres con la instruccion echo
<?php
$author = "Steve Ballmer";
echo "Developers, Developers, developers, developers, developers,
developers, developers, developers, developers!
- $author.";
?>
Ejemplo 3-7. Una Cadena multiple con asignacion
<?php
$author = "Bill Gates";
$text = "Measuring programming progress by lines of code is like
measuring aircraft building progress by weight.
- $author.";
?>
PHP también ofrece una secuencia de líneas múltiples utilizando el operador <<<,
comúnmente denominado her-doc o heredoc, como una forma de especificar un literal
de cadena, conservando los saltos de línea y otros espacios en blanco (incluida la
sangría) en el texto. Su uso se puede ver en el Ejemplo 3-8.
Ejemplo 3-8. Declaración alternativa de eco multilínea__________________________
<?php
$author = "Brian W. Kernighan";
echo <<<_END
Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are,
by definition, not smart enough to debug it.
- $author.
_END;
?>
Este código le dice a PHP que muestre todo entre las dos etiquetas _END como si fuera
una cadena de comillas dobles (excepto que las comillas en un heredoc no necesitan ser
escapadas). Esto significa que, por ejemplo, un desarrollador puede escribir secciones
enteras de HTML directamente en el código PHP y luego simplemente reemplazar
partes dinámicas específicas con variables de PHP.
Es importante recordar que el cierre _END; la etiqueta debe aparecer justo al comienzo
de una nueva línea y debe ser lo único en esa línea; ni siquiera se permite añadir un
comentario después de ella (ni siquiera un espacio). Una vez que haya cerrado un
bloque multilínea, puede usar el mismo nombre de etiqueta nuevamente.
NOTA
Recuerde:usandoel <<< _ END ..._END; heredocconstruct, no es necesario que agregue 
n caracteres de salto de línea para enviar un salto de línea; solo presione Retorno e inicie
una nueva línea. Además, a diferencia de una cadena delimitada por una comilla doble o
una comillasimple,puede usartodaslascomillassimples y dobles que le gusten dentro de
un heredoc, sin escapar de ellas precediéndolas con una barra inclinada ().
Ejemplo 3-9 Muestra como usar la misma sintaxiss para asignar multiples lineas a una
variable.
Ejemplo 3-9. Asignación de una variable a una cadena de caracteres multilinea
<?php
$author = "Scott Adams";
$out = <<<_END
Normal people believe that if it ain't broke, don't fix it.
Engineers believe that if it ain't broke, it doesn't have enough
features yet.
- $author.
_END;
?>
La variable $out se completará con el contenido entre las dos etiquetas. Si estuviera
agregando, en lugar de asignar, también podría haber usado .= En lugar de = para
agregar la cadena a $out.
Tenga cuidado de no colocar un punto y coma directamente después de la primera
aparición de _END, porque eso terminaría el bloque de líneas múltiples antes de que
comenzara y provocaría un mensaje de error de análisis. El único lugar para el punto y
coma es después de la etiqueta _END de terminación, aunque es seguro usar puntos y
comas dentro del bloque como caracteres de texto normales.
Por cierto, la etiqueta _END es simplemente una que elegí para estos ejemplos porque es
poco probable que se use en otro lugar en el código PHP y, por lo tanto, es única. Pero
puede usar cualquier etiqueta que desee, como _SECTION1 o _OUTPUT, yasí
sucesivamente. Además, para ayudar a diferenciar etiquetas como esta de las variables o
funciones, la práctica general es precederlas con un guión bajo, pero no tiene que usar
una si elige no hacerlo.
NOTA
Colocar texto en varias líneas suele ser más conveniente para hacer que su código PHP
sea más fácil de leer, porque una vez que se muestra en una página web, las reglas de
formato HTML toman el relevo y el espacio en blanco se suprime (pero $ author sigue
siendo reemplazado por el valor de la variable ). No tiene que usar uno si elige no hacerlo.
Entonces, por ejemplo, si carga estos ejemplos de salida de líneas múltiples en un
navegador, no se mostrarán en varias líneas, porque todos los navegadores tratan las
líneas nuevas como si fueran espacios. Sin embargo, si usa la función de fuente de vista
del navegador, encontrará que las líneas nuevas están colocadas correctamente, y la salida
aparece en varias líneas.
Escribiendo Variables
PHP es un lenguaje muy libremente tipado. Esto significa que no es necesario declarar
las variables antes de que se utilicen, y que PHP siempre convierte las variables al tipo
requerido por su contexto cuando se accede a ellas.
Por ejemplo, puede crear un número de varios dígitos y extraer el enésimo dígito
simplemente asumiendo que es una cadena. En el siguiente fragmento de código, los
números 12345 y 67890 se multiplican entre sí, devolviendo un resultado de
838102050, que luego se coloca en la variable $number, como se muestra en el
Ejemplo 3-10.
Ejemplo 3-10. Conversiòn Automatica de un numero a un String de Cadena
<?php
$number = 12345 * 67890;
echo substr($number, 3, 1);
?>
En el punto de la tarea, $number es una variable numérica. Pero en la segunda línea,
se realiza una llamada al substr de la función PHP, que solicita que se devuelva un
carácter de $number, comenzando en la cuarta posición (recordando que los
desplazamientos de PHP comienzan desde cero). Para hacer esto, PHP convierte
$number en una cadena de nueve caracteres, para que substr pueda acceder a él y
devolver el caracter, que en este caso es 1.
Lo mismo ocurre con convertir una cuerda en un número, y así sucesivamente. En el
ejemplo 3-11, la variable $pi se establece en un valor de cadena, que luego se
convierte automáticamente en un número de coma flotante en la tercera línea mediante
la ecuación para calcular el área de un círculo, que emite el valor 78.5398175.
Ejemplo 3-11. Convirtiendo automaticamente un string de caracteres a un nùmero
<?php
$pi = "3.1415927";
$radius = 5;
echo $pi * ($radius * $radius);
?>
En la práctica, lo que esto significa es que no tiene que preocuparse demasiado por sus
tipos de variables. Simplemente asigneles valores que tengan sentido para usted y PHP
los convertirá si es necesario. Luego, cuando desee recuperar valores, simplemente
solicítelos (por ejemplo, con una declaración echo).
Contanstes
Las constantes son similares a las variables, contienen información para acceder más
tarde, excepto que son lo que parecen: constante. En otras palabras, una vez que haya
definido uno, su valor se establece para el resto del programa y no se puede modificar.
Un ejemplo de uso de una constante podría ser mantener la ubicación de la raíz del
servidor (la carpeta con los archivos principales de su sitio web). Definirías una
constante como esta:
define("ROOT_LOCATION", "/usr/local/www/");
Luego, para leer los contenidos de la variable, simplemente se refiere a ella como una
variable regular (pero no va precedida de un signo de dólar):
$directory = ROOT_LOCATION;
Ahora, cuando necesite ejecutar su código PHP en un servidor diferente con una
configuración de carpeta diferente, solo tiene que cambiar una sola línea de código.
En general, se considera una buena práctica usar mayúsculas para nombres de variables
constantes, especialmente si otras personas también leen su código.
Constantes Predefinidas
PHP viene preparado con docenas de constantes predefinidas que, por lo general, no es
probable que utilice como principiante de PHP. Sin embargo, hay algunas conocidas
como las constantes mágicas que te serán útiles. Los nombres de las constantes mágicas
siempre tienen dos guiones bajos al principio y dos al final, de modo que no intente
accidentalmente nombrar una de sus constantes con un nombre que ya se haya tomado.
Se detallan en la Tabla 3-5. Los conceptos a los que se hace referencia en la tabla se
presentarán en futuros capítulos.
Tabla 3-5. Constantes Magicas PHP’s
Constante Magica Description
__LINE__ El Numero actual de Linea del Archivo
__FILE__ La rutacompleta y el nombre del archivo. Si se usa dentro de una inclusión, se devuelve el
nombre del archivo incluido. En PHP 4.0.2, __FILE__ siempre contiene una ruta absoluta
con enlaces simbólicos resueltos, mientras que en versiones anteriores podría contener una
ruta relativa en algunas circunstancias.
__DIR__ El directorio del archivo. Si se usa dentro de una inclusión, se devuelve el directorio del
archivo incluido. Esto es equivalente a dirname (__ FILE__). Este nombre de directorio no
tiene una barra inclinada a menos que sea el directorio raíz. (Agregado en PHP 5.3.0)
__FUNCTION__ El nombre de la función. (Agregado en PHP 4.3.0.) A partir de PHP 5, devuelve el nombre
de la función tal como fue declarado (distingue entre mayúsculas y minúsculas). En PHP 4,
su valor siempre es minúsculo.
__CLASS__ El nombre de la clase. (Agregado en PHP 4.3.0.) A partir de PHP 5, devuelve el nombre de
la clase tal como fue declarado (distingue entre mayúsculas y minúsculas). En PHP 4, su
valor siempre es minúsculo.
__METHOD__ El nombre del método de clase. (Agregado en PHP 5.0.0.) El nombre del método se devuelve
tal como fue declarado (distingue entre mayúsculas y minúsculas).
__NAMESPACE__ The name of thecurrent namespace (case-sensitive). This constant is defined at compile
time. (Added in PHP 5.3.0.)
NOTA
Las dos cosas principales que debe recordar acerca de las constantes son que no deben
tener un prefijo $ (como con las variables regulares), y que puede definirlas solo
mediante la función de definición.
Un uso práctico de estas variables es con fines de depuración, cuando necesita insertar
una línea de código para ver si el flujo del programa lo alcanza:
echo "This is line " . __LINE__ . " of file " . __FILE__;
Esto hace que la línea del programa actual en el archivo actual (incluida la ruta) que se
está ejecutando se envíe al navegador web.
La diferencia entre los comandos de echo y print
Hasta ahora, ha visto el comando echo usado de varias maneras diferentes para enviar
texto desde el servidor a su navegador. En algunos casos, se ha emitido un literal de
cadena. En otros, las cadenas se concatenaron primero o se evaluaron variables.
También he mostrado la producción repartida en varias líneas.
Pero también hay una alternativa al compando echo que puede usar: para imprimir. Los
dos comandos son bastante similares, pero print es una construcción similar a una
función que toma un solo parámetro y tiene un valor de retorno (que siempre es 1),
mientras que echo es simplemente una construcción de lenguaje PHP. Debido a que
ambos comandos son constructos, ninguno requiere el uso de paréntesis.
En general, el comando echo será un poco más rápido que print en la salida de texto
general, porque no establece un valor de retorno. Por otro lado, como no se implementa
como una función, el comando echo no se puede usar como parte de una expresión más
compleja, mientras que print sí puede. Aquí hay un ejemplo para mostrar si el valor de
una variable es TRUE o FALSE utilizando print, algo que no se podría realizar de la
misma manera con echo, porque mostraría un mensaje de error de Parse:
$b ? print "TRUE" : print "FALSE";
El signo de interrogación es simplemente una forma de pregunar si la variable $b es
TRUE o FALSE. Cualquiera que sea el comando que se encuentra a la izquierda de los
dos puntos siguientes se ejecuta si $b es TRUE, mientras que el comando a la derecha
se ejecuta si $b es FALSE.
En general, sin embargo, los ejemplos en este libro usan echo, y le recomiendo que lo
haga también hasta que llegue a tal punto en su desarrollo de PHP que descubra la
necesidad de usar el comando print
Functions o Funciones
Las funciones o Functions se usan para separar secciones de código que realizan una tarea en
particular. Por ejemplo, tal vez a menudo necesite buscar una fecha y devolverla en un formato
determinado. Ese sería un buen ejemplo para convertir en una función. El código que lo hace
podría tener solo tres líneas, pero si tiene que pegarlo en su programa una docena de veces, hará
que su programa sea innecesariamente grande y complejo, a menos que use una función. Y si
decide cambiar el formato de datos más tarde, ponerlo en una función significa tener que
cambiarlo en un solo lugar.
Al colocarlo en una función no solo acorta el código fuente y lo hace más legible, sino que
también agrega funcionalidad adicional (juego de palabras intencionado), ya que las funciones
pueden pasar parámetros para que funcionen de manera diferente. También pueden devolver
valores al código de llamada.
Para crear una función, declare de la manera que se muestra en el Ejemplo 3-12.
Ejemplo 3-12.Declaracion Simple de una function_____________________________
<?php
function longdate($timestamp)
{
return date("l F jS Y", $timestamp);
}
?>
Esta función toma un tipo UNIXtimestamp (un número entero que representa una fecha y hora
basada en el número de segundos desde las 00:00 a. M. Del 1 de enero de 1970) y luego llama a
la función de fecha de PHP con la cadena de formato correcta para devolver un fecha en el
formato del martes 2 de mayo de 2017. Se puede pasar cualquier cantidad de parámetros entre
los paréntesis iniciales; hemos elegido aceptar solo uno. Las llaves incluyen todo el código que
se ejecuta cuando más tarde llama a la función.
Para dar salida a la fecha de hoy usando esta función, coloque la siguiente llamada en su código:
echo longdate(time());
Esta llamada usa la función de tiempo de PHP incorporada para obtener un tipo UNIX
timestamp y la pasa a la nueva función de fecha larga, que luego devuelve la cadena apropiada
al comando echo para su visualización. Si necesita imprimir la fecha hace 17 días, ahora solo
tiene que emitir la siguiente llamada:
echo longdate(time() - 17 * 24 * 60 * 60);
que pasa a la function longdate el tipo UNIX timestamp menos la cantidad de segundos desde hace
17 días (17 días × 24 horas × 60 minutos × 60 segundos).
Las funciones también pueden aceptar múltiples parámetros y devolver resultados múltiples,
utilizando técnicas que desarrollaré en los siguientes capítulos.
Alcance de las Variables
Si tiene un programa muy largo, es muy posible que pueda empezar a quedarse sin buenos
nombres de variable, pero con PHP puede decidir el alcance de una variable. En otras palabras,
puede, por ejemplo, decirle que desea que la variable $temp se use solo dentro de una función
en particular y olvidar que alguna vez se utilizó cuando la función retorna. De hecho, este es el
alcance predeterminado para las variables de PHP.
Alternativamente, podría informarle a PHP que una variable es de alcance global y, por lo tanto,
puede acceder a ella en cualquier otra parte de su programa.
Variables Locales
Las variables locales o Local Variables son variables que se crean dentro de, y solo se puede
acceder mediante, una función. Por lo general, son variables temporales que se utilizan para
almacenar resultados parcialmente procesados antes del retorno de la función.
Un conjunto de variables locales es la lista de argumentos para una función. En la sección
anterior, definimos una función que aceptaba un parámetro llamado $timestamp. Esto es
significativo solo en el cuerpo de la función; no puede obtener o establecer su valor fuera de la
función.
Para otro ejemplo de una variable local, eche un vistazo a la función de fecha larga, que se
modifica ligeramente en el ejemplo 3-13.
Ejemplo 3-13. Una Version Expandida de la function longdate
<?php
function longdate($timestamp)
{
$temp = date("l F jS Y", $timestamp);
return "The date is $temp";
}
?>
Aquí hemos asignado el valor devuelto por la función de fecha a la variable temporal $temp,
que luego se inserta en la cadena devuelta por la función. Tan pronto como la función retorna,
se borra el valor de $temp, como si nunca se hubiera usado.
Ahora, para ver los efectos del alcance variable, veamos un código similar en el Ejemplo 3-14.
Aquí $temp se ha creado antes de llamar a la función longdate.
Ejemplo 3-14. Este Este intento de acceder $ temp en función longdate fallará
<?php
$temp = "The date is ";
echo longdate(time());
function longdate($timestamp)
{
return $temp . date("l F jS Y", $timestamp);
}
?>
Sin embargo, debido a que $temp no se creó dentro de la función longdate ni se le pasó como
parámetro, longdate no puede acceder a él. Por lo tanto, este fragmento de código solo muestra
la fecha, no el texto anterior. De hecho, primero mostrará el mensaje de error. Aviso: variable
no definida: temp.
La razón de esto es que, de forma predeterminada, las variables creadas dentro de una función
son locales para esa función, y las variables creadas fuera de cualquier función solo se puede
acceder por código no funcional.
Algunas formas de reparar el Ejemplo 3-14 aparecen en los Ejemplos 3-15 y 3-16.
Ejemplo 3-15. Rescribiendo el codigo para referse a la variable $temp dentro del alcance local
resuelve el problema
<?php
$temp = "The date is ";
echo $temp . longdate(time());
function longdate($timestamp)
{
return date("l F jS Y", $timestamp);
}
?>
El ejemplo 3-15 mueve la referencia a $temp fuera de la función. La referencia aparece
en el mismo ámbito donde se definió la variable.
La solución del ejemplo 3-16 transfiere $temp a la función longdate como argumento
adicional. longdate lo lee en una variable temporal que crea llamada $text y arroja el
resultado deseado.
Ejemplo 3-16. Una solución alternative: pasando $temp como un argumento
<?php
$temp = "The date is ";
echo longdate($temp, time());
function longdate($text, $timestamp)
{
return $text . date("l F jS Y", $timestamp);
}
?>
Variables Globales
Hay casos en los que necesita una variable para tener alcance global, porque quiere que todo su
código pueda acceder a ella. Además, algunos datos pueden ser grandes y complejos, y no desea
seguir pasándolos como argumentos a las funciones.
Para declarar que una variable tiene alcance global, use la palabra clave global. Supongamos
que tiene una forma de registrar a los usuarios en su sitio web y desea que todo su código sepa
si está interactuando con un usuario que ha iniciado sesión o con un invitado. Una forma de
hacerlo es crear una variable global como $
global $is_logged_in;
NOTA
Olvidar el alcance de una variable es un error de programación común, por lo que recordar
cómo funciona el alcance variable lo ayudará a depurar algunos problemas bastante oscuros.
Baste decir que a menos que haya declarado una variable de otra manera, su alcance se limita
a ser local: ya sea a la función actual, o al código fuera de cualquier función, dependiendo de
si se creó o se accedió primero dentro o fuera de una función .
Ahora, su función de inicio de sesión simplemente tiene que establecer esa variable en 1
después de un intento de inicio de sesión exitoso, o 0 luego de su falla. Debido a que el alcance
de la variable es global, cada línea de código en su programa puede acceder a ella.
Sin embargo, debería usar variables globales con precaución. Te recomiendo que los crees solo
cuando no puedes encontrar otra manera de lograr el resultado que deseas. En general, los
programas que se dividen en partes pequeñas y datos segregados son menos problemáticos y
más fáciles de mantener. Si tiene un programa de mil líneas (y algún día lo hará) en el que
descubre que una variable global tiene el valor incorrecto en algún momento, ¿cuánto tiempo le
llevará encontrar el código que lo configuró incorrectamente?
Además, si tiene demasiadas variables globales, corre el riesgo de utilizar uno de esos nombres
de nuevo localmente, o al menos pensando que lo ha usado localmente, cuando de hecho ya ha
sido declarado como global. Todo tipo de errores extraños pueden surgir de tales situaciones.
Variables Estaticas o (Static)
En la sección Variables locales, mencioné que el valor de la variable se borra cuando la
función finaliza. Si una función se ejecuta muchas veces, comienza con una nueva copia
de la variable y la configuración anterior no tiene ningún efecto.
Aquí hay un caso interesante. ¿Qué sucede si tiene una variable local dentro de una
función a la que no desea que tenga acceso cualquier otra parte del código, pero también
desea mantener su valor para la próxima vez que se llame a la función? ¿Por qué? Tal
vez porque quiere un contador para realizar un seguimiento de cuántas veces se llama
una función. La solución es declarar una variable estática, como se muestra en el
Ejemplo 3-17.
Ejemplo 3-17.Una Funcion Usando una variable Estatica (Static)
<?php
function test()
{
static $count = 0;
echo $count;
$count++;
}
?>
Aquí la primera línea de la prueba de función crea una variable estática llamada $ count
y la inicializa a un valor de 0. La siguiente línea genera el valor de la variable; el último
lo incrementa.
La próxima vez que se llame a la función, porque $ count ya ha sido declarado, se omite
la primera línea de la función. Luego se muestra el valor previamente incrementado de $
count antes de que la variable se incremente de nuevo.
NOTA
A veces adopto la convención de hacer mayúsculas todas las variables globales (así como se
recomienda que las constantes sean mayúsculas) para que pueda ver a simple vista el alcance
de una variable.
Si planea usar variables estáticas, debe tener en cuenta que no puede asignar el resultado
de una expresión en sus definiciones. Se pueden inicializar solo con valores
predeterminados (consulte el Ejemplo 3-18).
Ejemplo 3-18. Declaraciones de variables estáticas permitidas y no permitidas
<?php
static $int = 0; // Allowed
static $int = 1+2; // Disallowed (will produce a Parse error)
static $int = sqrt(144); // Disallowed
?>
Variables Superglobales
Comenzando con PHP 4.1.0, varias variables predefinidas están disponibles. Estas son
conocidas como variables superglobales, lo que significa que son proporcionadas por el
entorno PHP, pero son globales dentro del programa, accesibles en cualquier lugar.
Estos superglobales contienen mucha información útil sobre el programa actualmente en
ejecución y su entorno (consulte la Tabla 3-6). Están estructurados como matrices
asociativas, un tema discutido en el Capítulo 6.
Tabla 3-6. Variables SuperGlobales de PHP’s
Nombre Superglobal
Contenido
$GLOBALS Todas las variables que están actualmente definidas en el alcance global del
script. Los nombres de las variables son las claves de la matriz.
$_SERVER
Información como encabezados,rutas y ubicaciones de guiones.Las
entradas en este conjunto son creadas por el servidor web, y no hay garantía
de que cada servidor web proporcione alguno o todos estos.
$_GET Variables pasadas al script actual a través del método HTTP GET.
$_POST Variables pasadas al script actual trave s del metodo HTTP POST
$_FILES Elementos cargados en el script actual a través del método HTTP POST.
$_COOKIE
Variables pasadas al script actual a través de cookies HTTP.
$_SESSION
Variables de sesión disponibles para el script actual.
$_REQUEST Contenido de la información pasada desde el navegador; de forma
predeterminada, $ _GET, $ _POST, y $ _COOKIE.
$_ENV
Variables pasadas al guión actual a través del método de entorno.
Todos los superglobales (excepto $ GLOBALS) se nombran con un guion bajo inicial
único y solo letras mayúsculas; por lo tanto, debe evitar nombrar sus propias variables
de esta manera para evitar confusiones potenciales.
Para ilustrar cómo los usa, veamos un poco de información que muchos sitios emplean.
Entre los muchos nuggets de información suministrados por las variables superglobales,
se encuentra la URL de la página que remitió al usuario a la página web actual. Se
puede acceder a esta información de la página de referencia de esta manera:
$came_from = $_SERVER['HTTP_REFERER'];
Es así de simple. Ah, y si el usuario fue directamente a su página web, como escribir su
URL directamente en un navegador, $ come_from se establecerá en una cadena vacía.
Seguridad y Superglogales
Es necesario tener precaución antes de comenzar a usar variables superglobales, ya que
a menudo los piratas informáticos intentan encontrar exploits para entrar en su sitio
web. Lo que hacen es cargar $_POST, $_GET, u otros superglobales con código
malicioso, como comandos Unix o MySQL que pueden dañar o mostrar datos
confidenciales si los accesas ingenuamente.
Por lo tanto, siempre debe desinfectar los superglobales antes de usarlos. Una forma de
hacerlo es a través de la función PHP htmlentities. Convierte todos los caracteres en
entidades HTML. Por ejemplo, los caracteres menores que y mayores que (<y>) se
transforman en las cadenas & lt; y & gt; para que se vuelvan inofensivos, como son
todas las comillas y las barras diagonales inversas, y así sucesivamente.
Por lo tanto, una manera mucho mejor de acceder $_SERVER (y otros superglobales)
es:
$came_from = htmlentities($_SERVER['HTTP_REFERER']);
Este capítulo le ha proporcionado una sólida base en el uso de PHP. En el Capítulo 4,
comenzaremos a usar lo que aprendió para crear expresiones y controlar el flujo de
programas; en otras palabras, realice una programación real.
Pero antes de continuar, le recomiendo que se evalúe con algunas (si no todas) las
siguientes preguntas para asegurarse de que ha digerido por completo el contenido de
este capítulo.
Precaución
El uso de la función htmlentities para la desinfección es una práctica importante en
cualquier circunstancia en la que el usuario u otros datos de terceros se procesen para su
salida, no solo con superglobales.
Preguntas
1. ¿Qué etiqueta se usa para provocar que PHP empiece a interpretar el código del
programa? ¿Y cuál es la forma abreviada de la etiqueta?
2. ¿Cuáles son los dos tipos de etiquetas de comentarios?
3. ¿Qué caracter debe colocarse al final de cada declaración de PHP?
4. ¿Qué símbolo se usa para prefabricar todas las variables de PHP?
5. ¿Qué puede almacenar una variable?
6. ¿Cuál es la diferencia entre $variable = 1 y $variable == 1?
7. ¿Por qué supone que se permite un carácter de subrayado en nombres de
variables (por ejemplo, $usuario_actual) mientras que los guiones no lo son (por
ejemplo, $usuario_actual)?
8. ¿Los nombres de las variables distinguen mayúsculas de minúsculas
9. ¿Puedes usar espacios en nombres de variables?
10. ¿Cómo se convierte un tipo de variable a otro (por ejemplo, una cadena a un
número)?
11. ¿Cuál es la diferencia entre ++ $ j y $ j ++?
12. ¿Los operadores son && y son intercambiables?
13. ¿Cómo se puede crear un echo o asignación multilínea?
14. ¿Puedes redefinir una constante?
15. ¿Cómo hacer un carácter de escape en un string?
16. ¿Cuál es la diferencia entre los comandos echo e print?
17. ¿Cuál es el propósito de las funciones?
18. ¿Cómo se puede hacer que una variable sea accesible para todas las partes de un
programa PHP?
19. Si genera datos dentro de una función, ¿cuáles son algunas formas de transmitir
los datos al resto del programa?
20. ¿Cuál es el resultado de combinar una cadena con un número?
Vea el Capítulo 3 Respuestas en el Apéndice A para las respuestas a estas preguntas
Aprendiendo php my sql, javascript, css, html5 capitulo 3 (introduccion a php

Más contenido relacionado

La actualidad más candente

SoapUI ile Rest Api Testi
SoapUI ile Rest Api TestiSoapUI ile Rest Api Testi
SoapUI ile Rest Api TestiTuncer Ergin
 
Chapter 6 the django admin site
Chapter 6  the django admin siteChapter 6  the django admin site
Chapter 6 the django admin site家璘 卓
 
Perl 101 - The Basics of Perl Programming
Perl  101 - The Basics of Perl ProgrammingPerl  101 - The Basics of Perl Programming
Perl 101 - The Basics of Perl ProgrammingUtkarsh Sengar
 
Object Oriented Programming Lecture Notes
Object Oriented Programming Lecture NotesObject Oriented Programming Lecture Notes
Object Oriented Programming Lecture NotesFellowBuddy.com
 
Introdução à Programação Web com Angular
Introdução à Programação Web com AngularIntrodução à Programação Web com Angular
Introdução à Programação Web com AngularElmano Cavalcanti
 
Introdução à Engenharia de Software e UML
Introdução à Engenharia de Software e UMLIntrodução à Engenharia de Software e UML
Introdução à Engenharia de Software e UMLNatanael Simões
 
Python - Dicionários
Python - DicionáriosPython - Dicionários
Python - DicionáriosMarcos Castro
 
Intro to Python Programming Language
Intro to Python Programming LanguageIntro to Python Programming Language
Intro to Python Programming LanguageDipankar Achinta
 
Oop in c++ lecture 1
Oop in c++  lecture 1Oop in c++  lecture 1
Oop in c++ lecture 1zk75977
 
Python Basics
Python BasicsPython Basics
Python BasicsPooja B S
 
Introdução a Linguagem de Programação PHP
Introdução a Linguagem de Programação PHPIntrodução a Linguagem de Programação PHP
Introdução a Linguagem de Programação PHPClayton de Almeida Souza
 
Object Oriented Programming Lab Manual
Object Oriented Programming Lab Manual Object Oriented Programming Lab Manual
Object Oriented Programming Lab Manual Abdul Hannan
 

La actualidad más candente (20)

SoapUI ile Rest Api Testi
SoapUI ile Rest Api TestiSoapUI ile Rest Api Testi
SoapUI ile Rest Api Testi
 
Chapter 6 the django admin site
Chapter 6  the django admin siteChapter 6  the django admin site
Chapter 6 the django admin site
 
Perl 101 - The Basics of Perl Programming
Perl  101 - The Basics of Perl ProgrammingPerl  101 - The Basics of Perl Programming
Perl 101 - The Basics of Perl Programming
 
Object Oriented Programming Lecture Notes
Object Oriented Programming Lecture NotesObject Oriented Programming Lecture Notes
Object Oriented Programming Lecture Notes
 
PHP Regular Expressions
PHP Regular ExpressionsPHP Regular Expressions
PHP Regular Expressions
 
Programación Orientada a Objetos para Python
Programación Orientada a Objetos para PythonProgramación Orientada a Objetos para Python
Programación Orientada a Objetos para Python
 
Introdução à Programação Web com Angular
Introdução à Programação Web com AngularIntrodução à Programação Web com Angular
Introdução à Programação Web com Angular
 
Padrão Adapter
Padrão AdapterPadrão Adapter
Padrão Adapter
 
Beautiful soup
Beautiful soupBeautiful soup
Beautiful soup
 
Introdução à Engenharia de Software e UML
Introdução à Engenharia de Software e UMLIntrodução à Engenharia de Software e UML
Introdução à Engenharia de Software e UML
 
Python - Dicionários
Python - DicionáriosPython - Dicionários
Python - Dicionários
 
JSON
JSONJSON
JSON
 
Análise e Modelagem com UML
Análise e Modelagem com UMLAnálise e Modelagem com UML
Análise e Modelagem com UML
 
Intro to Python Programming Language
Intro to Python Programming LanguageIntro to Python Programming Language
Intro to Python Programming Language
 
Oop in c++ lecture 1
Oop in c++  lecture 1Oop in c++  lecture 1
Oop in c++ lecture 1
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Python Basics
Python BasicsPython Basics
Python Basics
 
SEMINAR
SEMINARSEMINAR
SEMINAR
 
Introdução a Linguagem de Programação PHP
Introdução a Linguagem de Programação PHPIntrodução a Linguagem de Programação PHP
Introdução a Linguagem de Programação PHP
 
Object Oriented Programming Lab Manual
Object Oriented Programming Lab Manual Object Oriented Programming Lab Manual
Object Oriented Programming Lab Manual
 

Similar a Aprendiendo php my sql, javascript, css, html5 capitulo 3 (introduccion a php

Similar a Aprendiendo php my sql, javascript, css, html5 capitulo 3 (introduccion a php (20)

Tutorial de cómo crear una pagina web
Tutorial de cómo crear una pagina webTutorial de cómo crear una pagina web
Tutorial de cómo crear una pagina web
 
Apuntes php
Apuntes phpApuntes php
Apuntes php
 
Programacion en php atavez de ejemplos
Programacion en php atavez de ejemplosProgramacion en php atavez de ejemplos
Programacion en php atavez de ejemplos
 
Apuntes php
Apuntes phpApuntes php
Apuntes php
 
MaterialndenformacionnAA2___6864c1535448eec___.pdf
MaterialndenformacionnAA2___6864c1535448eec___.pdfMaterialndenformacionnAA2___6864c1535448eec___.pdf
MaterialndenformacionnAA2___6864c1535448eec___.pdf
 
QUE ES PHP
QUE ES PHPQUE ES PHP
QUE ES PHP
 
Apuntes php
Apuntes phpApuntes php
Apuntes php
 
Programacion en php a traves de ejemplos
Programacion en php a traves de ejemplosProgramacion en php a traves de ejemplos
Programacion en php a traves de ejemplos
 
Ejemplos en php
Ejemplos en phpEjemplos en php
Ejemplos en php
 
Apuntes php.pdf ejemplos
Apuntes php.pdf ejemplosApuntes php.pdf ejemplos
Apuntes php.pdf ejemplos
 
Apuntes php
Apuntes phpApuntes php
Apuntes php
 
Apuntes php
Apuntes phpApuntes php
Apuntes php
 
Tutorial php basico
Tutorial php basicoTutorial php basico
Tutorial php basico
 
Ensayo php
Ensayo phpEnsayo php
Ensayo php
 
11 PHP. PHP y HTML
11 PHP. PHP y HTML11 PHP. PHP y HTML
11 PHP. PHP y HTML
 
Php
PhpPhp
Php
 
3
33
3
 
Php tema 4
Php tema 4Php tema 4
Php tema 4
 
(Desarrollo web).manual.php.5
(Desarrollo web).manual.php.5(Desarrollo web).manual.php.5
(Desarrollo web).manual.php.5
 
Php
PhpPhp
Php
 

Último

Guia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdfGuia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdflauradbernals
 
COMOGANARAMIGODPARACRISTOIGLESIAADVENTISTANECOCLI,COM
COMOGANARAMIGODPARACRISTOIGLESIAADVENTISTANECOCLI,COMCOMOGANARAMIGODPARACRISTOIGLESIAADVENTISTANECOCLI,COM
COMOGANARAMIGODPARACRISTOIGLESIAADVENTISTANECOCLI,COMcespitiacardales
 
12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdfedwinmelgarschlink2
 
libro de Ciencias Sociales_6to grado.pdf
libro de Ciencias Sociales_6to grado.pdflibro de Ciencias Sociales_6to grado.pdf
libro de Ciencias Sociales_6to grado.pdfFAUSTODANILOCRUZCAST
 
Buscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webBuscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webDecaunlz
 
Institucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenaInstitucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenadanielaerazok
 
institucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenainstitucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenajuniorcuellargomez
 
COMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfCOMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfOscarBlas6
 
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAINSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAdanielaerazok
 
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfNUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfisrael garcia
 

Último (10)

Guia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdfGuia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdf
 
COMOGANARAMIGODPARACRISTOIGLESIAADVENTISTANECOCLI,COM
COMOGANARAMIGODPARACRISTOIGLESIAADVENTISTANECOCLI,COMCOMOGANARAMIGODPARACRISTOIGLESIAADVENTISTANECOCLI,COM
COMOGANARAMIGODPARACRISTOIGLESIAADVENTISTANECOCLI,COM
 
12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf
 
libro de Ciencias Sociales_6to grado.pdf
libro de Ciencias Sociales_6to grado.pdflibro de Ciencias Sociales_6to grado.pdf
libro de Ciencias Sociales_6to grado.pdf
 
Buscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webBuscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la web
 
Institucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenaInstitucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalena
 
institucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenainstitucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalena
 
COMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfCOMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdf
 
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAINSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
 
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfNUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
 

Aprendiendo php my sql, javascript, css, html5 capitulo 3 (introduccion a php

  • 1. Capítulo 3. Introduccion a PHP En el Capítulo 1, expliqué que PHP es el lenguaje que usa para que el servidor genere salida de salida dinámica que es potencialmente diferente cada vez que un navegador solicita una página. En este capítulo, comenzarás a aprender este lenguaje simple pero poderoso; será el tema de los siguientes capítulos hasta el Capítulo 7. Te animo a que desarrolles tu código PHP en uno de los IDEs enumerados en el Capítulo 2. Te ayudará a detectar errores tipográficos y acelerar el aprendizaje tremendamente en comparación con los editores con menos funciones. Muchos de estos entornos de desarrollo le permiten ejecutar el código PHP y ver los resultados analizados en este capítulo. También le mostraré cómo insertar el PHP en un archivo HTML para que pueda ver cómo se ve el resultado en una página web (la forma en que sus usuarios finalmente lo verán). Pero ese paso, por emocionante que pueda ser al principio, no es realmente importante en esta etapa. En producción, sus páginas web serán una combinación de PHP, HTML y JavaScript, y algunas declaraciones de MySQL diseñadas mediante CSS, y posiblemente utilizando varios elementos HTML5. Además, cada página puede conducir a otras páginas para proporcionar a los usuarios formas de hacer clic a través de enlaces y completar formularios. Sin embargo, podemos evitar toda esa complejidad mientras aprendemos cada idioma. ¡Enfóquese ahora solo en escribir código PHP y asegúrese de obtener el resultado que espera, o al menos que comprenda el resultado que realmente obtiene! Incorporando PHP Dentro de HTML Por defecto, los documentos PHP terminan con la extensión .php. Cuando un servidor web encuentra esta extensión en un archivo solicitado, automáticamente lo pasa al procesador PHP. Por supuesto, los servidores web son altamente configurables, y algunos desarrolladores web eligen forzar los archivos que terminan en .htm o .html para que también sean analizados por el procesador PHP, generalmente porque quieren ocultar el hecho de que están usando PHP. Su programa PHP es responsable de devolver un archivo limpio adecuado para mostrar en un navegador web. En su forma más simple, un documento PHP dará como resultado solo HTML. Para probar esto, puede tomar cualquier documento HTML normal, como un archivo index.html y guardarlo como index.php, y se mostrará de forma idéntica al original. Para activar los comandos de PHP, necesita aprender una nueva etiqueta. La primera parte es: <?php Lo primero que notará es que la etiqueta no se ha cerrado. Esto se debe a que se pueden colocar secciones enteras de PHP dentro de esta etiqueta, y solo finalizan cuando se encuentra la parte de cierre, que se ve así: ?>
  • 2. Un pequeño programa PHP "Hello World" podría parecerse al Ejemplo 3-1 Ejemplo 3-1. Incando PHP <?php echo "Hello world"; ?> La forma en que usa esta etiqueta es bastante flexible. Algunos programadores abren la etiqueta al comienzo de un documento y la cierran al final, y generan cualquier código HTML directamente desde los comandos de PHP. Otros, sin embargo, optan por insertar solo los fragmentos más pequeños posibles de PHP dentro de estas etiquetas donde sea que se requiera el uso de scripts dinámicos, dejando el resto del documento en HTML estándar. El último tipo de programador generalmente argumenta que su estilo de codificación resulta en un código más rápido, mientras que el primero dice que el aumento de velocidad es tan mínimo que no justifica la complejidad adicional de ingresar y salir de PHP muchas veces en un solo documento. . A medida que aprenda más, seguramente descubrirá su estilo preferido de desarrollo PHP, pero para hacer que los ejemplos en este libro sean más fáciles de seguir, he adoptado el enfoque de mantener el número de transferencias entre PHP y HTML al mínimo. generalmente solo una o dos veces en un documento. Por cierto, hay una ligera variación en la sintaxis de PHP. Si busca ejemplos de PHP en Internet, también puede encontrar un código donde la sintaxis de apertura y cierre se ve así: <?php echo "Hello world"; ?> Aunque no es tan obvio que se llame al analizador de PHP, esta es una sintaxis alternativa válida que también suele funcionar, pero debe desaconsejarse, ya que es incompatible con XML y su uso ahora está en desuso (lo que significa que ya no se recomienda y podría ser eliminado en futuras versiones). Los Ejemplos de Este Libro Para ahorrarle el tiempo que llevaría escribirlos todos, todos los ejemplos de este libro se han archivado en el sitio web complementario, que puede descargar a su NOTA Si solo tiene código PHP en un archivo, puede omitir el cierre?>. Esta puede ser una buena práctica,ya que asegurará que no haya un exceso de espacio en blanco que se escapa de sus archivos PHP (especialmente importante cuando está escribiendo código orientado a objetos).
  • 3. computadora haciendo clic en el enlace Descargar ejemplos en la sección de encabezado (consulte la Figura 3). 1). Además de tener todos los ejemplos guardados por capítulo y número de ejemplo (como example3-1.php), el archivo también contiene una carpeta adicional llamada named_examples, en la que encontrará todos los ejemplos que sugiero que guarde usando un nombre de archivo específico (como el próximo Ejemplo 3-4, que debe guardarse como test1.php). LA ESTRUCTURA DE PHP Vamos a cubrir bastante terreno en esta sección. No es demasiado difícil, pero te recomiendo que estudies cuidadosamente, ya que sienta las bases para todo lo demás en este libro. Como siempre, hay algunas preguntas útiles al final del capítulo que puede usar para evaluar cuánto ha aprendido. Usando Comentarios // This is a comment Esta versión de la función de comentarios es una excelente manera de eliminar temporalmente una línea de código de un programa que le está dando errores. Por ejemplo, podría usar dicho comentario para ocultar una línea de código de depuración hasta que lo necesite, así: // echo "X equals $x"; También puede usar este tipo de comentario directamente después de una línea de código para describir su acción, como esta: $x += 10; // Increment $x by 10
  • 4. Cuando necesita comentarios de varias líneas, hay un segundo tipo de comentario, que se parece a Ejemplo 3.2 Example 3-2. Comentario Multilineas <?php /* This is a section of multiline comments which will not be interpreted */ ?> Puede usar los pares de caracteres * * y * / para abrir y cerrar comentarios en casi cualquier lugar que desee dentro de su código. La mayoría, si no todos, los programadores usan esta construcción para comentar temporalmente secciones enteras de código que no funcionan o que, por una razón u otra, no desean ser interpretadas. Sintaxis Basica PHP es un lenguaje bastante simple con raíces en C y Perl, pero se parece más a Java. También es muy flexible, pero hay algunas reglas que debes aprender sobre su sintaxis y estructura. Punto y Coma Es posible que haya notado en los ejemplos anteriores que los comandos PHP terminaron con un punto y coma, como este: $x += 10; Probablemente la causa más común de errores que encontrará con PHP sea olvidando este punto y coma. Esto hace que PHP trate múltiples enunciados como una declaración, que no puede entender, lo que le lleva a producir un mensaje de error de Parse. (Parse Error) El Simbolo $ El símbolo $ ha llegado a ser utilizado de diferentes maneras por diferentes lenguajes de programación. Por ejemplo, si alguna vez ha escrito en el lenguaje BASIC, habrá usado los $ para terminar nombres de variables para denotarlos como cadenas. Advertencia Un error común es usar / * y * / para comentar una gran sección de código que ya contiene una sección comentada que usa esos caracteres. No puedes anidar los comentarios de esta manera; el intérprete de PHP no sabrá dónde termina un comentario y mostrará un mensaje de error. Sin embargo, si utiliza un editor de programa o IDE con resaltado de sintaxis, este tipo de error es más fácil de detectar.
  • 5. En PHP, sin embargo, debe colocar un $ en frente de todas las variables. Esto es necesario para hacer que el analizador de PHP sea más rápido, ya que lo sabe al instante cuando se encuentra con una variable. Independientemente de que sus variables sean números, cadenas o matrices, todas deberían ser similares a las del ejemplo 3-3. Example 3-3. Tres diferentes formas de asignacion de un typo de variable <?php $mycounter = 1; $mystring = "Hello"; $myarray = array("One", "Two", "Three"); ?> Y realmente esa es prácticamente toda la sintaxis que debes recordar. A diferencia de otros lenguajes que son muy estrictos sobre cómo sangrar y diseñar su código (por ejemplo, Python), PHP le deja completamente libre de usar (o no usar) todo el sangrado y espaciado que desee. De hecho, generalmente se recomienda el uso razonable de espacios en blanco (junto con comentarios exhaustivos) para ayudarlo a comprender su código cuando vuelva a utilizarlo. También ayuda a otros programadores cuando tienen que mantener su código. Variables Hay una metáfora simple que te ayudará a entender de qué se tratan las variables de PHP. ¡Solo piense en ellos como cajas de fosforos pequeñas (o grandes)! Así es, cajas de fósforos sobre las que has pintado y nombres escritos. Las comillas indican que "Fred Smith" es una cadena de caracteres. Debe encerrar cada cadena entre comillas o apóstrofes (comillas simples), aunque hay una sutil diferencia entre los dos tipos de comillas, que se explica más adelante. Cuando desee ver lo que hay en la caja, ábralo, sáquelo y léelo. En PHP, hacerlo así se ve así: echo $username; O puede asignarlo a otra variable (fotocopie el documento y coloque la copia en otra caja de cerillas), como este: $current_user = $username;
  • 6. Si desea probar PHP por su cuenta, intente introducir los ejemplos de este capítulo en un IDE (como se recomienda al final del Capítulo 2) para ver resultados instantáneos, o puede ingresar el código en el Ejemplo 3-4. en un editor de programas y guárdelo en el directorio raíz de documentos de su servidor (también discutido en el Capítulo 2) como test1.php. Ejemplo 3-4. Tu primer Programa en________________________________________ <?php // test1.php $username = "Fred Smith"; echo $username; echo "<br>"; $current_user = $username; echo $current_user; ?> Ahora puede llamarlo ingresando lo siguiente en la barra de direcciones de su navegador :http://localhost/test1.php El resultado de ejecutar este código debería ser dos apariciones del nombre "Fred Smith", el primero de los cuales es el resultado del comando echo $username, y el segundo del comando echo $current_user command. Variables Numericas Las variables no contienen solo caracteres; también pueden contener números. Si volvemos a la analogía de la caja de cerillas, para almacenar el número 17 en la variable $count, el equivalente sería colocar, por ejemplo, 17, cuentas en una caja de fósforos en la que ha escrito la palabra count: $count = 17; Tambien puedes usar números de punto-flotante, (contienen puntos decimales); la sintaxis serial la misma NOTA Si durante la instalación de su servidor web (como se detalla en el Capítulo 2) cambió el puerto asignado al servidor a algo más que 80, entonces debe colocar ese número de puerto dentro de la URL en este y en todos los demás ejemplos de este libro. Entonces, por ejemplo, si cambió el puerto a 8080, la URL precedente se convierte en: http: // localhost: 8080 / test1.php No mencionaré esto nuevamente, así que recuerde usar el número de puerto si es necesario al probar algún ejemplo o escribir su propio código.
  • 7. $count = 17.5; Para leer el contenido de la caja de cerillas, simplemente la abre y cuenta las cuentas. En PHP, asignaría el valor de $ count a otra variable o tal vez simplemente lo haga eco en el navegador web. Arrays – (Arreglos)(Matrices) Entonces, ¿qué son las matrices? Bueno, puedes pensar en ellos como varias cajas de cerillas pegadas. Por ejemplo, digamos que queremos almacenar los nombres de jugador para un equipo de fútbol de cinco personas en una matriz llamada $team. Para hacer esto, podríamos pegar cinco cajas de fósforos uno al lado del otro y anotar los nombres de todos los jugadores en trozos de papel separados, colocando uno en cada caja de fósforos. En toda la parte superior del ensamblaje de la caja de cerillas, escribiríamos la palabra equipo (ver Figura 3-3). El equivalente de esto en PHP sería: $team = array('Bill', 'Mary', 'Mike', 'Chris', 'Anne'); Esta sintaxis es más complicada que las que he explicado hasta ahora. El código de construcción de matriz consiste en la siguiente construcción: array(); Con cinco Caracteres Dentro. Cada character queda encerrado entre los apostrofes Si quisiéramos saber quién es el jugador 4, podríamos usar este comando: echo $team[3]; // Se mostrara el Nombre de Chris
  • 8. La razón por la cual el enunciado anterior tiene el número 3, no el 4, se debe a que el primer elemento de un conjunto de PHP es en realidad el elemento 0, por lo que los números del jugador serán de 0 a 4. Matrices de dos Dimensiones Hay mucho más que puedes hacer con las matrices. Por ejemplo, en lugar de ser líneas unidimensionales de cajas de cerillas, pueden ser matrices bidimensionales o incluso pueden tener tres o más dimensiones. Como ejemplo de una matriz bidimensional, digamos que queremos hacer un seguimiento de un juego de tres en raya, que requiere una estructura de datos de nueve celdas dispuestas en un cuadrado de 3 × 3. Para representar esto con cajas de cerillas, imagine que nueve de ellas se pegan entre sí en una matriz de tres filas por tres columnas (consulte la Figura 3-4). Ahora puede colocar un trozo de papel con una "x" o una "o" en la casilla de cerillas correcta para cada jugada jugada. Para hacer esto en código PHP, debe configurar una matriz que contenga tres matrices más, como en el Ejemplo 3-5, en el que la matriz está configurada con un juego que ya está en progreso. Example 3-5. Definiendo una matriz de dos dimensiones <?php $oxo = array(array('x', ' ', 'o'), array('o', 'o', 'x'), array('x', 'o', ' ')); ?> Una vez más, hemos avanzado un paso en la complejidad, pero es fácil de entender si tiene una comprensión de la sintaxis básica de la matriz. Hay tres construcciones array () anidadas dentro de la construcción de la matriz externa ().
  • 9. Para luego devolver el tercer elemento en la segunda fila de esta matriz, usaría el siguiente comando PHP, que mostrará una x: echo $oxo[1][2]; Como se mencionó, podemos admitir matrices con aún más dimensiones simplemente creando más matrices dentro de las matrices. Sin embargo, no cubriremos arreglos de más de dos dimensiones en este libro. Y no se preocupe si todavía tiene dificultades para entender las matrices, ya que el tema se explica en detalle en el Capítulo 6. Reglas para nombrar(declarar) variables Al crear variables de PHP, debe seguir estas cuatro reglas:  Los nombres de las variables deben comenzar con una letra del alfabeto o el carácter _ (guión bajo).  Los nombres de las variables solo pueden contener los caracteres a-z, A-Z, 0-9 y _ (guion bajo).  Los nombres de las variables no pueden contener espacios. Si una variable debe comprender más de una palabra, debe separarse con el carácter _ (guión bajo) (por ejemplo, $ nombre_usuario).  Los nombres de las variables distinguen mayúsculas de minúsculas. La variable $High_Score no es lo mismo que la variable $high_score. Operadores Los operadores son los comandos matemáticos, de caracteres, de comparación y lógicos, como más, menos, multiplicar y dividir. PHP se parece mucho a la aritmética simple; por ejemplo, la siguiente declaración produce 8: NOTA Recuerde que los índices de matriz (punteros en elementos dentro de una matriz) comienzan desde cero, no uno, por lo que [1] en el comando anterior se refiere a la segunda de las tres matrices, y [2] hace referencia a la tercera posición dentro de esa matriz. Devolverá el contenido de la caja de cerillas tres a lo largo y dos abajo. NOTA Para permitir caracteres ASCII extendidos que incluyen acentos, PHP también admite bytes de 127 a 255 en nombres de variables. Pero a menos que su código sea mantenido solo por programadores que estén familiarizados con esos personajes, probablemente sea mejor evitarlos, porque los programadores que usan teclados en inglés tendrán dificultades para acceder a ellos.
  • 10. echo 6 + 2; Antes de continuar para saber lo que PHP puede hacer por usted, tómese un momento para aprender sobre los diversos operadores que ofrece. Operadores Aritmeticos Los operadores aritméticos hacen lo que cabría esperar. Se usan para realizar matemáticas. Puede usarlos para las cuatro operaciones principales (más, menos, multiplicar y dividir), así como para encontrar un módulo (el resto después de una división) y para incrementar o disminuir un valor (consulte la Tabla 3-1). Table 3-1. Operadores Aritmeticos Operator Descripcion Ejemplo + Suma $j + 1 − Resta $j − 6 * Multiplicación $j * 11 / Division $j / 4 % Modulus (Resto de la División) $j % 9 ++ Incrementar 1 ++$j −− Decrement 1 −−$j Operadores de Asignación Estos operadores se utilizan para asignar valores a las variables. Comienzan con el muy simple = y avanzan a + =, - =, y así sucesivamente (vea la Tabla 3-2). El operador + = agrega el valor en el lado derecho a la variable de la izquierda, en lugar de reemplazar totalmente el valor de la izquierda. Por lo tanto, si $ count comienza con el valor 5, la instrucción: $count += 1; establece $ count to 6, al igual que la declaración de asignación más familiar: $count = $count + 1; Las cadenas tienen su propio operador, el período (.), Detallado en la sección Concatenación de cadenas
  • 11. Tabla 3-2. Operadores de Asignación Operator Ejemplo Equivalente a: = $j = 15 $j = 15 += $j += 5 $j = $j + 5 −= $j −= 3 $j = $j − 3 *= $j *= 8 $j = $j * 8 /= $j /= 16 $j = $j / 16 .= $j .= $k $j = $j . $k %= $j %= 4 $j = $j % 4 Operadores de Comparación Los operadores de comparación generalmente se usan dentro de una construcción, como una declaración if en la que debe comparar dos elementos. Por ejemplo, puede desear saber si una variable que ha incrementado ha alcanzado un valor específico, o si otra variable es menor que un valor establecido, y así sucesivamente (consulte la Tabla 3-3). Tenga en cuenta la diferencia entre = y ==. El primero es un operador de asignación, y el segundo es un operador de comparación. Incluso los programadores más avanzados a veces pueden transponer los dos cuando codifican apresuradamente, así que ten cuidado. . Table 3-3. Comparison operators Operator Description Example == Es igual a $j == 4 != No es igual a $j != 21 > Es mayor que $j > 3 < Es menor que $j < 100 >= Es mayor o igual a $j >= 15 <= Es menor o igual a $j <= 8 Operadores Logicos Si no los ha usado antes, los operadores lógicos pueden parecer un poco desalentadores al principio. Pero solo piensa en ellos de la misma forma que usarías la lógica en inglés. Por ejemplo, podría decirse a sí mismo: "Si es la hora posterior a las 12 p.m. y antes de las 2 p.m., luego almorzar. "En PHP, el código para esto podría parecerse a lo siguiente (usando tiempo militar):
  • 12. if ($hour > 12 && $hour < 14) dolunch(); Aquí hemos trasladado el conjunto de instrucciones para ir al almuerzo a una función que luego tendremos que crear llamada dolunch. El entonces de la declaración queda fuera, porque está implícito y, por lo tanto, es innecesario. Como muestra el ejemplo anterior, generalmente utiliza un operador lógico para combinar los resultados de dos de los operadores de comparación que se muestran en la sección anterior. También se puede ingresar un operador lógico a otro operador lógico ("Si la hora es posterior a las 12 p.m. y antes de las 2 p.m., o si el olor de un asado está impregnando el pasillo y hay placas en la mesa"). Como regla general, si algo tiene un valor VERDADERO o FALSO, se puede ingresar a un operador lógico. Un operador lógico toma dos entradas verdaderas o falsas y produce un resultado verdadero o falso. Tabla 3-4 Operadores Logicos Table 3-4. Logical operators Operador Descripción Ejemplo && And (y) $j == 3 && $k == 2 and Baja precedencia and (y) $j == 3 and $k == 2 || Or (o) $j < 5 || $j > 10 or Baja Precedencia or (o ) $j < 5 or $j > 10 ! Not (no) ! ($j == $k) xor Exclusive or (o excluye) $j xor $k Tenga en cuenta que && suele ser intercambiable con y; lo mismo es cierto para || y o Pero y y o tienen una precedencia más baja, por lo que en algunos casos, puede necesitar paréntesis adicionales para forzar la precedencia requerida. Por otro lado, hay momentos en los que solo y o es aceptable, como en la siguiente declaración, que utiliza un operador or (que se explicará en el Capítulo 10): mysql_select_db($database) or die("Unable to select database"); El más inusual de estos operadores es xor, que significa exclusivo o y devuelve un valor VERDADERO si cualquier valor es VERDADERO, pero un valor FALSO si ambas entradas son VERDADERAS o ambas entradas son FALSAS. Para entender esto, imagina que quieres preparar tu propio limpiador para artículos para el hogar. El amoníaco es un buen limpiador, al igual que el blanqueador, por lo que desea que su limpiador tenga uno de amoniaco que sea un buen limpiador, y también blanqueador, por lo que desea que su limpiadora tenga uno de estos. Pero el limpiador no debe tener ambos, porque la combinación es peligrosa. En PHP, podrías representar esto como: $ingredient = $ammonia xor $bleach;
  • 13. En el fragmento de ejemplo, si $ammonia o $bleach es TRUE, $ingredient también se establecerá en TRUE. Pero si ambos son VERDADEROS o ambos son FALSOS, $ingredient se establecerá en FALSO. Asignación de Variables La sintaxis para asignar un valor a una variable siempre es variable = valor. O, para reasignar el valor a otra variable, es otra variable = variable. También hay un par de otros operadores de asignación que le serán útiles. Por ejemplo, ya hemos visto: $x += 10; que le dice al analizador PHP que agregue el valor a la derecha (en este caso, el valor 10) a la variable $x. Del mismo modo, podríamos restar de la siguiente manera: $y −= 10; Incrementando y Decrementando Variables Agregar o restar 1 es una operación tan común que PHP proporciona operadores especiales para ello. Puede usar uno de los siguientes en lugar de los operadores + = y - =: ++$x; −−$y; Junto con una prueba (una declaración if), puede usar el siguiente código: if (++$x == 10) echo $x; Esto le dice a PHP que primero incremente el valor de $ x y luego pruebe si tiene el valor 10; si lo hace, muestra su valor. Pero también puede requerir que PHP incremente (o, en el siguiente ejemplo, reduzca) una variable después de que haya probado el valor, así: if ($y−− == 0) echo $y; que da un resultado sutilmente diferente. Supongamos que $ y comienza como 0 antes de que se ejecute la instrucción. La comparación arrojará un resultado VERDADERO, pero $ y se establecerá en -1 después de realizar la comparación. Entonces, ¿qué mostrará la declaración de echo: 0 o -1? Intenta adivinar, y luego prueba la declaración en un procesador PHP para confirmar. Debido a que esta combinación de afirmaciones es confusa, debe tomarse como solo un ejemplo educativo y no como una guía para un buen estilo de programación. En resumen, si una variable se incrementa o decrementa antes o después de la prueba depende de si el operador de incremento o decremento se coloca antes o después de la variable.
  • 14. Por cierto, la respuesta correcta a la pregunta anterior es que la instrucción echo mostrará el resultado -1, porque $ y se redujo inmediatamente después de que se accedió en la instrucción if y antes de la instrucción echo. Concatenación de Caracteres La concatenación de cadenas usa el punto (.) Para agregar una cadena de caracteres a otra. La forma más sencilla de hacerlo es la siguiente: echo "You have " . $msgs . " messages."; asumiendo la variable $msgs tiene un valor de 5, la salida de esta linea de codigo seria. You have 5 messages. Del mismo modo que puede agregar un valor a una variable numérica con el operador + =, puede agregar una cadena a otra utilizando. = Como este: $bulletin .= $newsflash; En este caso, si $bulletin contiene un boletín de noticias y $newsflash tiene un flash de noticias, el comando agrega el flash de noticias al boletín de noticias de modo que $bulletin ahora incluye ambas cadenas de texto. Tipos de Cadenas de Caracteres o Tipos de Strings PHP admite dos tipos de cadenas que se denotan por el tipo de comillas que utiliza. Si desea asignar una cadena literal, preservando el contenido exacto, debe usar las comillas simples (apóstrofo) como esta: $info = 'Preface variables with a $ like this: $variable'; En este caso, cada carácter dentro de la cadena de una sola cita se asigna a $info. Si hubiera utilizado comillas dobles, PHP habría intentado evaluar $variable como una variable. Por otro lado, cuando desee incluir el valor de una variable dentro de una cadena, hágalo utilizando cadenas de comillas dobles: echo "This week $count people have viewed your profile"; Como comprenderá, esta sintaxis también ofrece una forma más simple de concatenación en la que no necesita usar un punto, o cerrar y volver a abrir citas, para agregar una cadena a otra. Esto se llama sustitución de variables, y notará que algunas aplicaciones lo usan extensamente y otras no lo usan en absoluto. Caracteres de Escape Algunas veces, una cadena necesita contener caracteres con significados especiales que puedan interpretarse incorrectamente. Por ejemplo, la siguiente línea de código no funcionará, porque la segunda comilla encontrada en la ortografía de la palabra le dirá al
  • 15. analizador de PHP que se ha alcanzado el final de la cadena. En consecuencia, el resto de la línea se rechazará como un error: $text = 'My spelling's atroshus'; // Erroneous syntax Para corregir esto, puede agregar una barra invertida directamente antes de la comilla ofensiva para decirle a PHP que trate el carácter literalmente y no lo interprete: $text = 'My spelling's still atroshus'; Y puede realizar este truco en casi todas las situaciones en las que PHP de lo contrario devolvería un error al tratar de interpretar un personaje. Por ejemplo, la siguiente cadena de doble cita se asignará correctamente: $text = "She wrote upon it, "Return to sender"."; Además, puede usar caracteres de escape para insertar varios caracteres especiales en cadenas tales como pestañas, nuevas líneas y retornos de carro. Estos están representados, como podría adivinar, por t, n y r. Aquí hay un ejemplo que usa pestañas para diseñar un encabezado; se incluye aquí simplemente para ilustrar los escapes, porque en las páginas web siempre hay mejores formas de hacer el diseño: $heading = "DatetNametPayment"; Estos caracteres especiales precedidos de barra invertida solo funcionan en cadenas de comillas dobles. En cadenas de comillas simples, la cadena anterior se mostraría con las secuencias feas t en lugar de las pestañas. Dentro de las cadenas entre comillas simples, solo el apóstrofo escapado ( ') y la barra inversa escapada () se reconocen como caracteres escapados. Lineas de Multiples Comandos (Instrucciones) Hay momentos en los que necesita generar bastante texto desde PHP, y usar varias declaraciones de echo (o print) sería lento y complicado. Para superar esto, PHP ofrece dos comodidades. El primero es simplemente poner múltiples líneas entre comillas, como en el Ejemplo 3-6. Las variables también se pueden asignar, como en el Ejemplo 3-7. Ejemplo 3-6. Una Cadena de caracteres con la instruccion echo <?php $author = "Steve Ballmer"; echo "Developers, Developers, developers, developers, developers, developers, developers, developers, developers! - $author."; ?>
  • 16. Ejemplo 3-7. Una Cadena multiple con asignacion <?php $author = "Bill Gates"; $text = "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. - $author."; ?> PHP también ofrece una secuencia de líneas múltiples utilizando el operador <<<, comúnmente denominado her-doc o heredoc, como una forma de especificar un literal de cadena, conservando los saltos de línea y otros espacios en blanco (incluida la sangría) en el texto. Su uso se puede ver en el Ejemplo 3-8. Ejemplo 3-8. Declaración alternativa de eco multilínea__________________________ <?php $author = "Brian W. Kernighan"; echo <<<_END Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it. - $author. _END; ?> Este código le dice a PHP que muestre todo entre las dos etiquetas _END como si fuera una cadena de comillas dobles (excepto que las comillas en un heredoc no necesitan ser escapadas). Esto significa que, por ejemplo, un desarrollador puede escribir secciones enteras de HTML directamente en el código PHP y luego simplemente reemplazar partes dinámicas específicas con variables de PHP. Es importante recordar que el cierre _END; la etiqueta debe aparecer justo al comienzo de una nueva línea y debe ser lo único en esa línea; ni siquiera se permite añadir un comentario después de ella (ni siquiera un espacio). Una vez que haya cerrado un bloque multilínea, puede usar el mismo nombre de etiqueta nuevamente. NOTA Recuerde:usandoel <<< _ END ..._END; heredocconstruct, no es necesario que agregue n caracteres de salto de línea para enviar un salto de línea; solo presione Retorno e inicie una nueva línea. Además, a diferencia de una cadena delimitada por una comilla doble o una comillasimple,puede usartodaslascomillassimples y dobles que le gusten dentro de un heredoc, sin escapar de ellas precediéndolas con una barra inclinada ().
  • 17. Ejemplo 3-9 Muestra como usar la misma sintaxiss para asignar multiples lineas a una variable. Ejemplo 3-9. Asignación de una variable a una cadena de caracteres multilinea <?php $author = "Scott Adams"; $out = <<<_END Normal people believe that if it ain't broke, don't fix it. Engineers believe that if it ain't broke, it doesn't have enough features yet. - $author. _END; ?> La variable $out se completará con el contenido entre las dos etiquetas. Si estuviera agregando, en lugar de asignar, también podría haber usado .= En lugar de = para agregar la cadena a $out. Tenga cuidado de no colocar un punto y coma directamente después de la primera aparición de _END, porque eso terminaría el bloque de líneas múltiples antes de que comenzara y provocaría un mensaje de error de análisis. El único lugar para el punto y coma es después de la etiqueta _END de terminación, aunque es seguro usar puntos y comas dentro del bloque como caracteres de texto normales. Por cierto, la etiqueta _END es simplemente una que elegí para estos ejemplos porque es poco probable que se use en otro lugar en el código PHP y, por lo tanto, es única. Pero puede usar cualquier etiqueta que desee, como _SECTION1 o _OUTPUT, yasí sucesivamente. Además, para ayudar a diferenciar etiquetas como esta de las variables o funciones, la práctica general es precederlas con un guión bajo, pero no tiene que usar una si elige no hacerlo. NOTA Colocar texto en varias líneas suele ser más conveniente para hacer que su código PHP sea más fácil de leer, porque una vez que se muestra en una página web, las reglas de formato HTML toman el relevo y el espacio en blanco se suprime (pero $ author sigue siendo reemplazado por el valor de la variable ). No tiene que usar uno si elige no hacerlo. Entonces, por ejemplo, si carga estos ejemplos de salida de líneas múltiples en un navegador, no se mostrarán en varias líneas, porque todos los navegadores tratan las líneas nuevas como si fueran espacios. Sin embargo, si usa la función de fuente de vista del navegador, encontrará que las líneas nuevas están colocadas correctamente, y la salida aparece en varias líneas.
  • 18. Escribiendo Variables PHP es un lenguaje muy libremente tipado. Esto significa que no es necesario declarar las variables antes de que se utilicen, y que PHP siempre convierte las variables al tipo requerido por su contexto cuando se accede a ellas. Por ejemplo, puede crear un número de varios dígitos y extraer el enésimo dígito simplemente asumiendo que es una cadena. En el siguiente fragmento de código, los números 12345 y 67890 se multiplican entre sí, devolviendo un resultado de 838102050, que luego se coloca en la variable $number, como se muestra en el Ejemplo 3-10. Ejemplo 3-10. Conversiòn Automatica de un numero a un String de Cadena <?php $number = 12345 * 67890; echo substr($number, 3, 1); ?> En el punto de la tarea, $number es una variable numérica. Pero en la segunda línea, se realiza una llamada al substr de la función PHP, que solicita que se devuelva un carácter de $number, comenzando en la cuarta posición (recordando que los desplazamientos de PHP comienzan desde cero). Para hacer esto, PHP convierte $number en una cadena de nueve caracteres, para que substr pueda acceder a él y devolver el caracter, que en este caso es 1. Lo mismo ocurre con convertir una cuerda en un número, y así sucesivamente. En el ejemplo 3-11, la variable $pi se establece en un valor de cadena, que luego se convierte automáticamente en un número de coma flotante en la tercera línea mediante la ecuación para calcular el área de un círculo, que emite el valor 78.5398175. Ejemplo 3-11. Convirtiendo automaticamente un string de caracteres a un nùmero <?php $pi = "3.1415927"; $radius = 5; echo $pi * ($radius * $radius); ?> En la práctica, lo que esto significa es que no tiene que preocuparse demasiado por sus tipos de variables. Simplemente asigneles valores que tengan sentido para usted y PHP los convertirá si es necesario. Luego, cuando desee recuperar valores, simplemente solicítelos (por ejemplo, con una declaración echo). Contanstes Las constantes son similares a las variables, contienen información para acceder más tarde, excepto que son lo que parecen: constante. En otras palabras, una vez que haya definido uno, su valor se establece para el resto del programa y no se puede modificar. Un ejemplo de uso de una constante podría ser mantener la ubicación de la raíz del servidor (la carpeta con los archivos principales de su sitio web). Definirías una constante como esta:
  • 19. define("ROOT_LOCATION", "/usr/local/www/"); Luego, para leer los contenidos de la variable, simplemente se refiere a ella como una variable regular (pero no va precedida de un signo de dólar): $directory = ROOT_LOCATION; Ahora, cuando necesite ejecutar su código PHP en un servidor diferente con una configuración de carpeta diferente, solo tiene que cambiar una sola línea de código. En general, se considera una buena práctica usar mayúsculas para nombres de variables constantes, especialmente si otras personas también leen su código. Constantes Predefinidas PHP viene preparado con docenas de constantes predefinidas que, por lo general, no es probable que utilice como principiante de PHP. Sin embargo, hay algunas conocidas como las constantes mágicas que te serán útiles. Los nombres de las constantes mágicas siempre tienen dos guiones bajos al principio y dos al final, de modo que no intente accidentalmente nombrar una de sus constantes con un nombre que ya se haya tomado. Se detallan en la Tabla 3-5. Los conceptos a los que se hace referencia en la tabla se presentarán en futuros capítulos. Tabla 3-5. Constantes Magicas PHP’s Constante Magica Description __LINE__ El Numero actual de Linea del Archivo __FILE__ La rutacompleta y el nombre del archivo. Si se usa dentro de una inclusión, se devuelve el nombre del archivo incluido. En PHP 4.0.2, __FILE__ siempre contiene una ruta absoluta con enlaces simbólicos resueltos, mientras que en versiones anteriores podría contener una ruta relativa en algunas circunstancias. __DIR__ El directorio del archivo. Si se usa dentro de una inclusión, se devuelve el directorio del archivo incluido. Esto es equivalente a dirname (__ FILE__). Este nombre de directorio no tiene una barra inclinada a menos que sea el directorio raíz. (Agregado en PHP 5.3.0) __FUNCTION__ El nombre de la función. (Agregado en PHP 4.3.0.) A partir de PHP 5, devuelve el nombre de la función tal como fue declarado (distingue entre mayúsculas y minúsculas). En PHP 4, su valor siempre es minúsculo. __CLASS__ El nombre de la clase. (Agregado en PHP 4.3.0.) A partir de PHP 5, devuelve el nombre de la clase tal como fue declarado (distingue entre mayúsculas y minúsculas). En PHP 4, su valor siempre es minúsculo. __METHOD__ El nombre del método de clase. (Agregado en PHP 5.0.0.) El nombre del método se devuelve tal como fue declarado (distingue entre mayúsculas y minúsculas). __NAMESPACE__ The name of thecurrent namespace (case-sensitive). This constant is defined at compile time. (Added in PHP 5.3.0.) NOTA Las dos cosas principales que debe recordar acerca de las constantes son que no deben tener un prefijo $ (como con las variables regulares), y que puede definirlas solo mediante la función de definición.
  • 20. Un uso práctico de estas variables es con fines de depuración, cuando necesita insertar una línea de código para ver si el flujo del programa lo alcanza: echo "This is line " . __LINE__ . " of file " . __FILE__; Esto hace que la línea del programa actual en el archivo actual (incluida la ruta) que se está ejecutando se envíe al navegador web. La diferencia entre los comandos de echo y print Hasta ahora, ha visto el comando echo usado de varias maneras diferentes para enviar texto desde el servidor a su navegador. En algunos casos, se ha emitido un literal de cadena. En otros, las cadenas se concatenaron primero o se evaluaron variables. También he mostrado la producción repartida en varias líneas. Pero también hay una alternativa al compando echo que puede usar: para imprimir. Los dos comandos son bastante similares, pero print es una construcción similar a una función que toma un solo parámetro y tiene un valor de retorno (que siempre es 1), mientras que echo es simplemente una construcción de lenguaje PHP. Debido a que ambos comandos son constructos, ninguno requiere el uso de paréntesis. En general, el comando echo será un poco más rápido que print en la salida de texto general, porque no establece un valor de retorno. Por otro lado, como no se implementa como una función, el comando echo no se puede usar como parte de una expresión más compleja, mientras que print sí puede. Aquí hay un ejemplo para mostrar si el valor de una variable es TRUE o FALSE utilizando print, algo que no se podría realizar de la misma manera con echo, porque mostraría un mensaje de error de Parse: $b ? print "TRUE" : print "FALSE"; El signo de interrogación es simplemente una forma de pregunar si la variable $b es TRUE o FALSE. Cualquiera que sea el comando que se encuentra a la izquierda de los dos puntos siguientes se ejecuta si $b es TRUE, mientras que el comando a la derecha se ejecuta si $b es FALSE. En general, sin embargo, los ejemplos en este libro usan echo, y le recomiendo que lo haga también hasta que llegue a tal punto en su desarrollo de PHP que descubra la necesidad de usar el comando print Functions o Funciones Las funciones o Functions se usan para separar secciones de código que realizan una tarea en particular. Por ejemplo, tal vez a menudo necesite buscar una fecha y devolverla en un formato determinado. Ese sería un buen ejemplo para convertir en una función. El código que lo hace podría tener solo tres líneas, pero si tiene que pegarlo en su programa una docena de veces, hará que su programa sea innecesariamente grande y complejo, a menos que use una función. Y si decide cambiar el formato de datos más tarde, ponerlo en una función significa tener que cambiarlo en un solo lugar. Al colocarlo en una función no solo acorta el código fuente y lo hace más legible, sino que también agrega funcionalidad adicional (juego de palabras intencionado), ya que las funciones
  • 21. pueden pasar parámetros para que funcionen de manera diferente. También pueden devolver valores al código de llamada. Para crear una función, declare de la manera que se muestra en el Ejemplo 3-12. Ejemplo 3-12.Declaracion Simple de una function_____________________________ <?php function longdate($timestamp) { return date("l F jS Y", $timestamp); } ?> Esta función toma un tipo UNIXtimestamp (un número entero que representa una fecha y hora basada en el número de segundos desde las 00:00 a. M. Del 1 de enero de 1970) y luego llama a la función de fecha de PHP con la cadena de formato correcta para devolver un fecha en el formato del martes 2 de mayo de 2017. Se puede pasar cualquier cantidad de parámetros entre los paréntesis iniciales; hemos elegido aceptar solo uno. Las llaves incluyen todo el código que se ejecuta cuando más tarde llama a la función. Para dar salida a la fecha de hoy usando esta función, coloque la siguiente llamada en su código: echo longdate(time()); Esta llamada usa la función de tiempo de PHP incorporada para obtener un tipo UNIX timestamp y la pasa a la nueva función de fecha larga, que luego devuelve la cadena apropiada al comando echo para su visualización. Si necesita imprimir la fecha hace 17 días, ahora solo tiene que emitir la siguiente llamada: echo longdate(time() - 17 * 24 * 60 * 60); que pasa a la function longdate el tipo UNIX timestamp menos la cantidad de segundos desde hace 17 días (17 días × 24 horas × 60 minutos × 60 segundos). Las funciones también pueden aceptar múltiples parámetros y devolver resultados múltiples, utilizando técnicas que desarrollaré en los siguientes capítulos. Alcance de las Variables Si tiene un programa muy largo, es muy posible que pueda empezar a quedarse sin buenos nombres de variable, pero con PHP puede decidir el alcance de una variable. En otras palabras, puede, por ejemplo, decirle que desea que la variable $temp se use solo dentro de una función en particular y olvidar que alguna vez se utilizó cuando la función retorna. De hecho, este es el alcance predeterminado para las variables de PHP. Alternativamente, podría informarle a PHP que una variable es de alcance global y, por lo tanto, puede acceder a ella en cualquier otra parte de su programa. Variables Locales Las variables locales o Local Variables son variables que se crean dentro de, y solo se puede acceder mediante, una función. Por lo general, son variables temporales que se utilizan para almacenar resultados parcialmente procesados antes del retorno de la función.
  • 22. Un conjunto de variables locales es la lista de argumentos para una función. En la sección anterior, definimos una función que aceptaba un parámetro llamado $timestamp. Esto es significativo solo en el cuerpo de la función; no puede obtener o establecer su valor fuera de la función. Para otro ejemplo de una variable local, eche un vistazo a la función de fecha larga, que se modifica ligeramente en el ejemplo 3-13. Ejemplo 3-13. Una Version Expandida de la function longdate <?php function longdate($timestamp) { $temp = date("l F jS Y", $timestamp); return "The date is $temp"; } ?> Aquí hemos asignado el valor devuelto por la función de fecha a la variable temporal $temp, que luego se inserta en la cadena devuelta por la función. Tan pronto como la función retorna, se borra el valor de $temp, como si nunca se hubiera usado. Ahora, para ver los efectos del alcance variable, veamos un código similar en el Ejemplo 3-14. Aquí $temp se ha creado antes de llamar a la función longdate. Ejemplo 3-14. Este Este intento de acceder $ temp en función longdate fallará <?php $temp = "The date is "; echo longdate(time()); function longdate($timestamp) { return $temp . date("l F jS Y", $timestamp); } ?> Sin embargo, debido a que $temp no se creó dentro de la función longdate ni se le pasó como parámetro, longdate no puede acceder a él. Por lo tanto, este fragmento de código solo muestra la fecha, no el texto anterior. De hecho, primero mostrará el mensaje de error. Aviso: variable no definida: temp. La razón de esto es que, de forma predeterminada, las variables creadas dentro de una función son locales para esa función, y las variables creadas fuera de cualquier función solo se puede acceder por código no funcional. Algunas formas de reparar el Ejemplo 3-14 aparecen en los Ejemplos 3-15 y 3-16. Ejemplo 3-15. Rescribiendo el codigo para referse a la variable $temp dentro del alcance local resuelve el problema
  • 23. <?php $temp = "The date is "; echo $temp . longdate(time()); function longdate($timestamp) { return date("l F jS Y", $timestamp); } ?> El ejemplo 3-15 mueve la referencia a $temp fuera de la función. La referencia aparece en el mismo ámbito donde se definió la variable. La solución del ejemplo 3-16 transfiere $temp a la función longdate como argumento adicional. longdate lo lee en una variable temporal que crea llamada $text y arroja el resultado deseado. Ejemplo 3-16. Una solución alternative: pasando $temp como un argumento <?php $temp = "The date is "; echo longdate($temp, time()); function longdate($text, $timestamp) { return $text . date("l F jS Y", $timestamp); } ?> Variables Globales Hay casos en los que necesita una variable para tener alcance global, porque quiere que todo su código pueda acceder a ella. Además, algunos datos pueden ser grandes y complejos, y no desea seguir pasándolos como argumentos a las funciones. Para declarar que una variable tiene alcance global, use la palabra clave global. Supongamos que tiene una forma de registrar a los usuarios en su sitio web y desea que todo su código sepa si está interactuando con un usuario que ha iniciado sesión o con un invitado. Una forma de hacerlo es crear una variable global como $ global $is_logged_in; NOTA Olvidar el alcance de una variable es un error de programación común, por lo que recordar cómo funciona el alcance variable lo ayudará a depurar algunos problemas bastante oscuros. Baste decir que a menos que haya declarado una variable de otra manera, su alcance se limita a ser local: ya sea a la función actual, o al código fuera de cualquier función, dependiendo de si se creó o se accedió primero dentro o fuera de una función .
  • 24. Ahora, su función de inicio de sesión simplemente tiene que establecer esa variable en 1 después de un intento de inicio de sesión exitoso, o 0 luego de su falla. Debido a que el alcance de la variable es global, cada línea de código en su programa puede acceder a ella. Sin embargo, debería usar variables globales con precaución. Te recomiendo que los crees solo cuando no puedes encontrar otra manera de lograr el resultado que deseas. En general, los programas que se dividen en partes pequeñas y datos segregados son menos problemáticos y más fáciles de mantener. Si tiene un programa de mil líneas (y algún día lo hará) en el que descubre que una variable global tiene el valor incorrecto en algún momento, ¿cuánto tiempo le llevará encontrar el código que lo configuró incorrectamente? Además, si tiene demasiadas variables globales, corre el riesgo de utilizar uno de esos nombres de nuevo localmente, o al menos pensando que lo ha usado localmente, cuando de hecho ya ha sido declarado como global. Todo tipo de errores extraños pueden surgir de tales situaciones. Variables Estaticas o (Static) En la sección Variables locales, mencioné que el valor de la variable se borra cuando la función finaliza. Si una función se ejecuta muchas veces, comienza con una nueva copia de la variable y la configuración anterior no tiene ningún efecto. Aquí hay un caso interesante. ¿Qué sucede si tiene una variable local dentro de una función a la que no desea que tenga acceso cualquier otra parte del código, pero también desea mantener su valor para la próxima vez que se llame a la función? ¿Por qué? Tal vez porque quiere un contador para realizar un seguimiento de cuántas veces se llama una función. La solución es declarar una variable estática, como se muestra en el Ejemplo 3-17. Ejemplo 3-17.Una Funcion Usando una variable Estatica (Static) <?php function test() { static $count = 0; echo $count; $count++; } ?> Aquí la primera línea de la prueba de función crea una variable estática llamada $ count y la inicializa a un valor de 0. La siguiente línea genera el valor de la variable; el último lo incrementa. La próxima vez que se llame a la función, porque $ count ya ha sido declarado, se omite la primera línea de la función. Luego se muestra el valor previamente incrementado de $ count antes de que la variable se incremente de nuevo. NOTA A veces adopto la convención de hacer mayúsculas todas las variables globales (así como se recomienda que las constantes sean mayúsculas) para que pueda ver a simple vista el alcance de una variable.
  • 25. Si planea usar variables estáticas, debe tener en cuenta que no puede asignar el resultado de una expresión en sus definiciones. Se pueden inicializar solo con valores predeterminados (consulte el Ejemplo 3-18). Ejemplo 3-18. Declaraciones de variables estáticas permitidas y no permitidas <?php static $int = 0; // Allowed static $int = 1+2; // Disallowed (will produce a Parse error) static $int = sqrt(144); // Disallowed ?> Variables Superglobales Comenzando con PHP 4.1.0, varias variables predefinidas están disponibles. Estas son conocidas como variables superglobales, lo que significa que son proporcionadas por el entorno PHP, pero son globales dentro del programa, accesibles en cualquier lugar. Estos superglobales contienen mucha información útil sobre el programa actualmente en ejecución y su entorno (consulte la Tabla 3-6). Están estructurados como matrices asociativas, un tema discutido en el Capítulo 6. Tabla 3-6. Variables SuperGlobales de PHP’s Nombre Superglobal Contenido $GLOBALS Todas las variables que están actualmente definidas en el alcance global del script. Los nombres de las variables son las claves de la matriz. $_SERVER Información como encabezados,rutas y ubicaciones de guiones.Las entradas en este conjunto son creadas por el servidor web, y no hay garantía de que cada servidor web proporcione alguno o todos estos. $_GET Variables pasadas al script actual a través del método HTTP GET. $_POST Variables pasadas al script actual trave s del metodo HTTP POST $_FILES Elementos cargados en el script actual a través del método HTTP POST. $_COOKIE Variables pasadas al script actual a través de cookies HTTP. $_SESSION Variables de sesión disponibles para el script actual. $_REQUEST Contenido de la información pasada desde el navegador; de forma predeterminada, $ _GET, $ _POST, y $ _COOKIE. $_ENV Variables pasadas al guión actual a través del método de entorno. Todos los superglobales (excepto $ GLOBALS) se nombran con un guion bajo inicial único y solo letras mayúsculas; por lo tanto, debe evitar nombrar sus propias variables de esta manera para evitar confusiones potenciales. Para ilustrar cómo los usa, veamos un poco de información que muchos sitios emplean. Entre los muchos nuggets de información suministrados por las variables superglobales, se encuentra la URL de la página que remitió al usuario a la página web actual. Se puede acceder a esta información de la página de referencia de esta manera:
  • 26. $came_from = $_SERVER['HTTP_REFERER']; Es así de simple. Ah, y si el usuario fue directamente a su página web, como escribir su URL directamente en un navegador, $ come_from se establecerá en una cadena vacía. Seguridad y Superglogales Es necesario tener precaución antes de comenzar a usar variables superglobales, ya que a menudo los piratas informáticos intentan encontrar exploits para entrar en su sitio web. Lo que hacen es cargar $_POST, $_GET, u otros superglobales con código malicioso, como comandos Unix o MySQL que pueden dañar o mostrar datos confidenciales si los accesas ingenuamente. Por lo tanto, siempre debe desinfectar los superglobales antes de usarlos. Una forma de hacerlo es a través de la función PHP htmlentities. Convierte todos los caracteres en entidades HTML. Por ejemplo, los caracteres menores que y mayores que (<y>) se transforman en las cadenas & lt; y & gt; para que se vuelvan inofensivos, como son todas las comillas y las barras diagonales inversas, y así sucesivamente. Por lo tanto, una manera mucho mejor de acceder $_SERVER (y otros superglobales) es: $came_from = htmlentities($_SERVER['HTTP_REFERER']); Este capítulo le ha proporcionado una sólida base en el uso de PHP. En el Capítulo 4, comenzaremos a usar lo que aprendió para crear expresiones y controlar el flujo de programas; en otras palabras, realice una programación real. Pero antes de continuar, le recomiendo que se evalúe con algunas (si no todas) las siguientes preguntas para asegurarse de que ha digerido por completo el contenido de este capítulo. Precaución El uso de la función htmlentities para la desinfección es una práctica importante en cualquier circunstancia en la que el usuario u otros datos de terceros se procesen para su salida, no solo con superglobales.
  • 27. Preguntas 1. ¿Qué etiqueta se usa para provocar que PHP empiece a interpretar el código del programa? ¿Y cuál es la forma abreviada de la etiqueta? 2. ¿Cuáles son los dos tipos de etiquetas de comentarios? 3. ¿Qué caracter debe colocarse al final de cada declaración de PHP? 4. ¿Qué símbolo se usa para prefabricar todas las variables de PHP? 5. ¿Qué puede almacenar una variable? 6. ¿Cuál es la diferencia entre $variable = 1 y $variable == 1? 7. ¿Por qué supone que se permite un carácter de subrayado en nombres de variables (por ejemplo, $usuario_actual) mientras que los guiones no lo son (por ejemplo, $usuario_actual)? 8. ¿Los nombres de las variables distinguen mayúsculas de minúsculas 9. ¿Puedes usar espacios en nombres de variables? 10. ¿Cómo se convierte un tipo de variable a otro (por ejemplo, una cadena a un número)? 11. ¿Cuál es la diferencia entre ++ $ j y $ j ++? 12. ¿Los operadores son && y son intercambiables? 13. ¿Cómo se puede crear un echo o asignación multilínea? 14. ¿Puedes redefinir una constante? 15. ¿Cómo hacer un carácter de escape en un string? 16. ¿Cuál es la diferencia entre los comandos echo e print? 17. ¿Cuál es el propósito de las funciones? 18. ¿Cómo se puede hacer que una variable sea accesible para todas las partes de un programa PHP? 19. Si genera datos dentro de una función, ¿cuáles son algunas formas de transmitir los datos al resto del programa? 20. ¿Cuál es el resultado de combinar una cadena con un número? Vea el Capítulo 3 Respuestas en el Apéndice A para las respuestas a estas preguntas