¡Descarga introduccion a php y más Apuntes en PDF de Programación Informática solo en Docsity!
Introducción a PHP
1. Sintaxis general de PHP
Estructura de archivos PHP
El lenguaje de programación PHP nace en 1994 por la necesidad de
automatizar operaciones comunes para crear sitios de internet dinámicos. Es
inventado por Rasmus Lerdorf y basado en el lenguaje "C". Sus siglas
significan "Personal Home Page".
Las rutinas de PHP se crean en cualquier editor de texto, ya que es un
lenguaje "interpretado" (se lee, valida e interpreta hasta que es llamada una
rutina por el servidor). Todo archivo que contenga rutinas e instrucciones de
PHP debe estar contenido entre los símbolos "" y tener la
terminación ".php" para ser ejecutado correctamente. Así, un ejemplo de
unarchivo de PHP, que podría ser guardado con el nombre "hola.php", es:
php
print "Hola mundo!";
Para ejecutar un archivo de php con terminación ".php", debe "subirse" en el
servidor junto con las páginas de HTML, y escribir en un navegador el
nombre del archivo: "http://www.miserver.com/hola.php".
Para saber si un servidor de páginas web tiene instalado el intérprete de
PHP se puede crear este sencillo archivo, subirlo yejecutarlo desde un
navegador (debe de usarse un servidor de paginas web, no funciona si se
abre un archivo guardado en un disco duro local desde un navegador):
<?php
print phpinfo();
Este archivo debe producir un resultado similar a esto:
Si el resultado son las instrucciones del archivo, el PHP no esta instalado en
ese servidor.
Mezclar HTML y PHP
Es posible mezclar paginas de HTML y código PHP, escribiendo en la parte
correspondiente del archivo HTML el código dePHP, siempre "delimitado"
por las etiquetas "". Capture el siguiente Ejemplo:
Ejemplo de mezcla de HTML y PHP
Este es un ejemplo de como mezclar código estático de HTML
y dinámico de PHP
Esta parte es creada por el HTML.
";
Fin de la demostración
Una desventaja de esta mezcla es que no se puede separar el diseño del
código, lo cual hace difícil el desarrollo y el mantenimiento de un sitio en
el que se involucran diseñadores y programadores (o al menos varias
personas a la vez). Más adelante se describirán técnicas para mantener
separados el diseño y el código.
Comentarios
En todo lenguaje de programación es conveniente tener alguna forma de
incluir comentarios, letreros que indican alguna nota acerca del código o su
implementación.
presentación, etiquetas para cajas con los adornos de navidad, etc.
El concepto de "cajas" es el que más se asemeja a las variables. En la vida
real, los humanos guardamos cosas en todo tipo de "cajas", para ser usadas
más tarde, para acumular cosas "afines", para ir guardando monedas que
sobran, etc. Pero eso si, entre más cajas se tengan, es más fácil saber que hay
en ellas si NO se les pone una "etiqueta" o letrero en su exterior: a los
humanos les da por bautizar y etiquetar todo tipo de cosas, incluyendo sus
"cajitas".
Así que, ¿por que habría de ser diferente al crear un lenguaje de
programación?
Por esto es que las variables deben de ser "bautizadas" con nombres que sean
indicativos del tipo de información que se guarda en esas "cajitas". Y es
mucho mejor aun si no repetimos esos nombres.
Imaginen entrar a un cuarto lleno de cajas, todas con el
mismo letrero: "tornillos".
Para guardar todo tipo de "valores" e información, el PHP permite crear
variables, pero deben seguirse unas pequeñas reglas:
1 - Toda variable debe comenzar con el caracter "$".
2 - Solo pueden usarse letras (sin eñes ni acentos u otros caracteres
especiales), números y el guión bajo "_".
3 - Las letras mayúsculas y minúsculas SON diferentes.
4 - Restringir la longitud del nombre a 64 caracteres (mas por el beneficio del
humano que de la máquina)
Ejemplos de VARIABLES:
$uno
$contador
$nombre_de_variable_un_poco_largo
$i
$esta_variable_no_es_igual_a_esta_otra
$Esta_variable_no_es_igual_a_esta_otra
$iva
$subtotal
$subtotal
$total
$123_ya_te_vi
Si bien se goza de la libertad de usar cualquier nombre para la variable,
sin romper las reglas, es buena práctica limitarse a nombres
"mnemónicos" y cortos. Para que me sirve "bautizar" una variable que va
a contener un "numero de parte" de un producto como "$konichi_wa" o
"$no_se_que_nombre_usar" u otro nombre que no indica para que se va a
usar la variable. Opciones más sensatas serian "$numero_de_parte",
"$num_parte" o "$numpte".
A diferencia de otros lenguajes de programación, en el PHP se puede
"declarar" una variable en cualquier parte del código. En el momento que se
me ofrece una "cajita" para guardar algo, esta puede aparecer mágicamente
en cualquier parte de mi casa, solo necesito "pensar en ella" y nombrarla, así
de fácil.
Tipos de datos
Los tipos de datos o información que maneja el PHP se pueden resumir en lo
siguiente:
Enteros o "Integer" - Datos numéricos, pero sin incluir decimales. Optimo uso
son contadores. Ejemplos: 1, 2, 3, 5, 7, - 11, - 13,-17, - 19, - 23
Números con decimales o "Double" - Datos numéricos que si incluyen
decimales. Optimo uso son manejo de "dinero", datos estadísticos,
trigonométricos, etc. Ejemplos: 3.141592653589793, - 1.16, 0.
Cadenas de caracteres o "String" - Datos alfanuméricos para representar letras
y el lenguaje escrito de los humanos. Estos valores van siempre "encerrados"
o delimitados entre las comillas dobles o comillas sencillas (apóstrofes).
Optimo uso son todo tipo de letreros, mensajes, nombres, etc. Ejemplos:
"Ejemplos",
Operadores Aritméticos
Operador Nombre Ejemplo Resultado
+ adición 3 + 0.1415 3.1415 - substracción 5 - 7 - 2
* multiplicación 258444.8275 * 1.16 299795.9999 / división 5 / 2
2.5 % residuo 5 % 2 1
Atajos a operaciones comunes
Para ahorrar la escritura repetida de nombres de variables, existen "atajos" de
operaciones aritméticas comunes:
Operador Ejemplo Equivalente a+= $total += $subtotal $total = $total +
$subtotal - = $total - = $descuento $total = $total - $descuento *= $total *=
$iva $total = $total * $iva /= $promedio /= $total $promedio = $promedio /
$total %= $residuo %= $subtotal $residuo = $residuo % $subtotal .=
$letrerototote .= $letrerito $letrerototote = letrerototote. $letrerito ++
$contador++ $contador = $contador + 1 --$asistentes--$asistentes =
$asistentes - 1
Operador de concatenación
Para "unir" cadenas de caracteres se usa el operador punto ".":
$letrerototote = $letrerito. " para ". $nombre. " ". $apellido. "";
Operadores de comparación
Para comparar una cosa con otra y saber si el resultado es verdadero o falso se
usan estos operadores. Para los ejemplos, se asume que la variable $todo es
igual a 5.
Operador Nombre Es verdadero si... Ejemplo Resultado == igual a ambos
lados son iguales $todo == 5 true
!= diferente de ambos lados son diferentes $todo != 5 false ===
idéntico ambos lados son iguales y $todo === "5" false
son del mismo tipo de datos > mayor que la
izquierda es mayor que la derecha $todo > 4 true >= mayor o igual la
izquierda es mayor o igual a la derecha $todo >= 5 true < menor que la
izquierda es menor que la derecha $todo < 4 false <= menor o igual la
izquierda es menor o igual a la derecha $todo <= 5 true
Operadores booleanos
Estos operadores se usan para crear comparaciones mas complejas. Ejemplo
de la vida real son: "Si te haces tu tarea y te lavas los dientes puedes ir al
cine" - Solo si se cumplen ambas condiciones podrá ir al cine "Si haces tu
tarea o tiras la basura puedes ir al cine" - Con una de las dos condiciones que
se cumplan podrá ir al cine Operador Nombre Es verdadero si... Ejemplo
Resultado
and , && y ambos lados son verdaderos true
Cambio de tipo
Es posible "forzar" a que el resultado de una operación cambie de tipo,
como por ejemplo una división entre números con decimales regrese un
número entero. La manera mas fácil de forzar este cambio es así:
$entero = (integer) $subtotal / $iva;
La variable $entero sólo recibirá un valor entero, sin los decimales.
Operador Cambia a Ejemplo Resultado (integer) numero entero
$contador = (integer) 5 / 2 2 (double) numero con decimales
$promedio = (double) 3 + 2 5.0 (string) cadena de caracteres
$letrero = 3.1415 / 2 "1.57075" (boolean) verdadero o falso
$respuesta = 5 * 2 true En el ultimo caso, cualquier valor que sea
diferente de cero regresa "true", y cero regresa "false".
pueden usar
indistintamente';
Uso de etiquetas HTML
Cuando las rutinas de PHP se usan en un ambiente de servidores de web, los
resultados serán mostrados en un navegador, y losnavegadores entienden
etiquetas de HTML para dar formato a los textos.
Es por esto que en los comandos "print" o "echo" se incluyan etiquetas de
HTML. Es bueno familiarizarse con las etiquetas deHTML, ya que es difícil
prescindir totalmente de ellas.
Con la técnica del uso de plantillas para separar el diseño de la
programación, se reduce a un mínimo el uso de etiquetas deHTML desde
la rutina de PHP.
2. Control de flujo
La vida diaria esta llena de decisiones y rutinas. Levantarse, cepillar los
dientes, bañarse, desayunar, ir al trabajo, comer,hacerse "pato" en la
tarde, regresar a casa, cenar, ver TV o escuchar radio o leer algo, y
dormir.
Y en cada una de esta rutina mil y un decisiones que tomar: ¿me baño
primero o me lavo los dientes? ¿Desayuno huevos o soloun café? ¿Hay café?
¿Me voy por la supuesta vía rápida o por calles entre la ciudad? ¿Leo mi
correo o termino el reporte?¿Esta mi jefe en la oficina? ¿Qué como? ¿Cuanto
dinero traigo para comer? ...
En los lenguajes de programación existen dos grandes grupos de comandos
para el control del flujo del programa, para decidirque hacer, o si se trata de
un ciclo, cuantas veces hacerlo o hasta que momento dejar de hacerlo.
El primer grupo de comandos son los "condicionales", los cuales evalúan
una expresión y dependiendo del resultado de laevaluación (verdadero o
falso) ejecutan o dejan de ejecutar ciertas instrucciones.
Comando "if"
En un ejemplo anterior examinamos una situación parecida a esta: "Si haces
tu tarea puedes ir al cine". Este ejemplo de la vidareal contiene una condición,
que si se cumple trae una consecuencia. Pero de no cumplirse, no se hace
realidad dichaconsecuencia.
El comando "if" se traduce como "Si...", y es un comando condicional. Lo
primero a realizar es preguntar por una condiciónevaluando una expresión,
la cual solo puede ser verdadera o falsa, no existe otro resultado. Si el
resultado es "verdadero", seejecutan las instrucciones que están delimitadas
por un par de caracteres especiales: "{" y "}". La condición es
generalmenteuna o varias comparaciones.
La sintaxis básica para este comando es:
if ( expresión ) {
comando;
comando;
Ejemplo: 1 2 3 4 5 6 7 8 9 10 $edad = 45; $bono = 2500; $salario = 25000; if ( $edad >= 40 ) { $salario += $bono; print "Su edad lo hace acreedor a un bono por antigüedad. Su nuevo sueldo es $salario "; } print "Su edad es $edad ";
Pruebe este código. Luego cambie el valor de la variable $edad y compare los
resultados.
Regresando al ejemplo de la vida real, también puede suceder lo siguiente:
"Si haces tu tarea puedes ir al cine, de lo contrariono podrás ver la TV el día
de hoy".
Aquí se complican las cosas, ya que si no hago mi tarea no solo dejaré de ir al
cine, sino que además no podré ver la TV.
El comando "if" tiene otra forma que incluye la instrucción equivalente a "de lo contrario": 1 2 3 4 5 6 if ( expresión ) { comando; comando; ... } else { otro comando;
$edad = 25; if( $edad <= 20 ) { print "Te regalamos boletos para el concierto de Marilyn Manson "; } if( $edad > 20 and $edad <= 30 ) { print "Te regalamos unos boletos para ir al concierto de Moby "; } if( $edad > 30 and $edad <= 40 ) { print "Te regalamos unos boletos para ir al teatro "; } if( $edad > 40 ) { print "Te regalamos unos boletos para ir a la opera "; }
Comando "switch"
Una alternativa a usar varios comandos "if" es el comando "switch". A
diferencia de los comandos "if", el comando "switch"solo puede evaluar una
sola expresión. Puede comprenderse este comando como un "separador de
monedas", ya que esosaparatos funcionan gracias a las variaciones del tamaño
de las monedas.
La sintaxis básica para este comando es:
switch ( expresión ) {
case resultado1:
comando;
comando;
break;
case resultado2:
comando;
comando;
break;
case resultado3:
comando;
comando;
break;
default:
comando;
comando;
Ejemplo: 1 2 3 4 5 6 7 8 $estado_civil = "divorciado"; print "Lo invitamos a un viaje por el amazonas "; switch ( $estado_civil ) { case "soltero": print " donde podrá conocer a otras personas en "; break; case "casado": print " para que su familia viva ";
break; case "divorciado": print " en el que podrá olvidar sus problemas en "; break; case "arrejuntado": print " para que se anime a tomar esa importante decisión en "; break; case "viudo": print " para recordar los mejores momentos de su vida en "; break; default: print " que le ayudará a definir su estado social gracias a "; } print " una extraordinaria experiencia de 2 semanas, todo incluido ";
¡ Un "atajo" de un comando "if" con solo un comando para el caso "true" y
uno solo para el caso "false" lo proporciona esteoperador.
La sintaxis básica para este operador es:
$resultado = ( expresión)? resultado-si-es-true : resultado-si-es-false; Ejemplo: 1 2 3 4 5 6 $total = 35000; $tipo_de_cambio = 11.35; $gran_total = ( $tipo_de_cambio > 0 )? $total * $tipo_de_cambio : $total; $letrero = ( $tipo_de_cambio > 0 )? ", tipo de cambio ". $tipo_de_cambio : ""; print "El gran total de su pedido es $gran_total $letrero ";
El segundo grupo de comandos de control de flujo son los "ciclos", los
cuales evalúan una expresión y dependiendo delresultado de la evaluación
(verdadero o falso) ejecutan o dejan de ejecutar un ciclo de instrucciones.
Los ciclos, como los de la vida real, se apoyan en "contadores", que
permiten ejecutar un ciclo un numero finito de veces, yasea en un rango
especifico (algo así como "solo 7 veces") o hasta que suceda algo.
Comando "while" La sintaxis básica para este comando es:
while ( expresión ) { comando; comando; ... }
Mientras la expresión se evalúe como "true", se ejecutarán los comandos que
delimitan los caracteres "{" y "}". Al terminar elbloque de comandos, se
regresa a evaluar la expresión. Cuando la expresión se evalúe como "false",
$contador = 0; $veces = 7; print "Se van a imprimir $veces números: "; do { print " Número: $contador "; $contador++; } while ( $contador < 7 ); print "Fin del ciclo, el contador vale $contador";
Pruebe asignar a la variable $contador el numero 6 (o mayor) en ves de 0 y
observe el resultado.
Comando "for"
Como se observa en los ejemplos anteriores, es muy común usar una variable
"contador", la cual es inicializada en algún valor(en los ejemplos fue "cero") e
incrementada en un valor a cada vuelta del ciclo (en los ejemplos se
incrementó en "1").
El comando "for" representa una manera "diferente" de hacer un ciclo de tipo
"while", pero con la inicialización de la variable"contador", y su incremento,
en una sola linea.
La sintaxis básica para este comando es:
for ( inicializacion-del-contador ; expresión ; incremento-del-contador ) { comando; comando; ... }
La inicialización del contador solo se ejecuta una ves y nunca mas vuelve a
ejecutarse, antes de evaluar la expresión por vesprimera.
La expresión se evalúa al menos una ves y mientras su resultado sea "true", se
ejecutarán las instrucciones del ciclo.
Cuando se termina de ejecutar los comandos del ciclo, se incrementa el
contador, y se vuelve a evaluar la expresión.
Ejemplo: 1 $veces = 7;
print "Se van a imprimir $veces números: "; for ( $contador = 0 ; $contador < $veces ; $contador++ ) { print " Número: $contador "; } print "Fin del ciclo, el contador vale $contador";
Comandos "break" y "continue"
A veces es necesario salir prematuramente de un ciclo, debido a una
condición excepcional.. El comando "break" termina elciclo y no vuelve a
evaluar la expresión, terminando definitivamente el ciclo, sin importar el
valor de la expresión. Estecomando funciona dentro de cualquier comando de
ciclos y condicionales (if, switch, while, do...while y for).
Ejemplo: 1 2 3 4 5 6 7 8 9 10 11 $veces = 7; print "Se van a imprimir $veces números: "; for ( $contador = 0 ; $contador < $veces ; $contador++ ) { // aquí checo por una condición especial para terminar el ciclo if ( $contador == 5 ) { print "Se va a terminar el ciclo prematuramente "; break; } print " Número: $contador "; } print "Fin del ciclo, el contador vale $contador";
El comando "continue" sirve para saltarse un ciclo, sin terminar de ejecutar los comandos
restantes del ciclo.
Ejemplo: 1 2 3 4 5 6 7 8 9 10 11 $veces = 7; print "Se van a imprimir $veces números: "; for ( $contador = 0 ; $contador < $veces ; $contador++ ) { // aquí checo por una condición especial para saltar un ciclo if ( $contador == 4 ) { print "Se va a saltar un ciclo "; continue; } print " Número: $contador "; } print "Fin del ciclo, el contador vale $contador";