PHP es un lenguaje creado por una gran comunidad de personas. El sistema fue desarrollado originalmente en el año 1994 por Rasmus Lerdorf como un CGI escrito en C que permitía la interpretación de un número limitado de comandos. El sistema fue denominado Personal Home Page Tools y adquirió relativo éxito gracias a que otras personas pidieron a Rasmus que les permitiese utilizar sus programas en sus propias páginas. Dada la aceptación del primer PHP y de manera adicional, su creador diseñó un sistema para procesar formularios al que le atribuyó el nombre de FI (Form Interpreter) y el conjunto de estas dos herramientas, sería la primera versión compacta del lenguaje: PHP/FI.
Por qué es mejor que otras alternativas
Las cuatro grandes características: Velocidad, estabilidad, seguridad y simplicidad.
- Velocidad: No solo la velocidad de ejecución, la cual es importante, sino además no crear demoras en la máquina. Por esta razón no debe requerir demasiados recursos de sistema. PHP se integra muy bien junto a otro software, especialmente bajo ambientes Unix, cuando se configura como módulo de Apache, esta listo para ser utilizado.
- Estabilidad: La velocidad no sirve de mucho si el sistema se cae cada cierta cantidad de ejecuciones. Ninguna aplicación es 100% libre de bugs, pero teniendo de respaldo una increíble comunidad de programadores y usuarios es mucho mas difícil para lo bugs sobrevivir. PHP utiliza su propio sistema de administración de recursos y dispone de un sofisticado método de manejo de variables, conformando un sistema robusto y estable.
- Seguridad: El sistema debe poseer protecciones contra ataques. PHP provee diferentes niveles de seguridad, estos pueden ser configurados desde el archivo .ini
- Simplicidad: Se les debe permitir a los programadores generar código productivamente en el menor tiempo posible. Usuarios con experiencia en C y C++ podrán utilizar PHP rápidamente.
Bueno otra característica a tener en cuenta seria la conectividad. PHP dispone de una amplia gama de librerías, y agregarle extensiones es muy fácil. Esto le permite al PHP ser utilizado en muchas áreas diferentes, tales como encriptado, gráficos, XML y otras.
- PHP corre en (casi) cualquier plataforma utilizando el mismo código fuente, pudiendo ser compilado y ejecutado en algo así como 25 plataformas, incluyendo diferentes versiones de Unix, Windows (95,98,NT,ME,2000,XP,bla,bla,bla) y Macs. Como en todos los sistemas se utiliza el mismo código base, los scripts pueden ser ejecutados de manera independiente al OS.
- La sintaxis de PHP es similar a la del C, por esto cualquiera con experiencia en lenguajes del estilo C podrá entender rápidamente PHP. Entre los lenguajes del tipo C incluimos al Java y Javascript, de hecho mucha de la funcionalidad del PHP se la debe al C en funciones como fread() o srtlen(), así que muchos programadores se sentirán como en casa.
- PHP es completamente expandible. Está compuesto de un sistema principal (escrito por Zend), un conjunto de módulos y una variedad de extensiones de código.
- Muchas interfaces distintas para cada tipo de servidor. PHP actualmente se puede ejecutar bajo Apache, IIS, AOLServer, Roxen yTHTTPD. Otra alternativa es configurarlo como modulo CGI.
- Puede interactuar con muchos motores de bases de datos tales como MySQL, MS SQL, Oracle, Informix, PostgreSQL, y otros muchos. Siempre podrás disponer de ODBC para situaciones que lo requieran.
- Una gran variedad de módulos cuando un programador PHP necesite una interfase para una librería en particular, fácilmente podrá crear una API para esta. Algunas de las que ya vienen implementadas permiten manejo de gráficos, archivos PDF, Flash, Cybercash, calendarios, XML, IMAP, POP, etc.
- Rapidez. PHP generalmente es utilizado como modulo de Apache, lo que lo hace extremadamente veloz. Esta completamente escrito en C, así que se ejecuta rápidamente utilizando poca memoria.
- PHP es Open Source, lo cual significa que el usuario no depende de una compañía específica para arreglar cosas que no funcionan, además no estás forzado a pagar actualizaciones anuales para tener una versión que funcione. Muchos de nosotros que hemos esperado que Allaire arregle algo apreciamos esto.
Cómo trabaja php con el servidor web
Se debe contar con un servidor que tenga soporte activado para PHP. En la mayoría de servidores, .php es es la extensión predeterminada para los ficheros de PHP, aunque puede preguntar al administrador de su servidor para estar seguro. Si el servidor tiene soporte para PHP, entonces no es necesario hacer nada. Simplemente tiene que crear sus ficheros.php, guardarlos en su directorio web y el servidor los analizará. No hay necesidad de compilar nada o instalar otras herramientas. Se puede pensar en estos ficheros habilitados para PHP como simples ficheros HTML con el añadido de una nueva familia de etiquetas que permiten todo tipo de cosas.
Desde PHP 5.4.0, la CLI SAPI provee un servidor web embebido. Las aplicaciones PHP se detendran si la solicitud está bloqueada. Las peticiones de URI se sirven desde el actual directorio de trabajo donde PHP se inició, a menos que la opción -t sea utilizada para especificar una raíz de documentos explícita. Si una petición de URI no especifica un fichero, entonces el index.php o index.html que estén en el directorio dado serán devueltos. Si ninguno de los ficheros existen en el directorio, entonces será devuelto una respuesta de código 404. Si un fichero PHP es proporcionado en la línea de comandos cuando se inicia el servidor web éste es tratado como un script "enrutador". El script es ejecutado al inicio de cada petición HTTP. Si este script devuelve FALSE, entonces el recurso solicitado se devuelve tal cual está. De otra forma la salida del script se devuelve en el navegador. Los tipos MIME estándar son devueltos para ficheros con extensiones: .3gp, .apk, .avi, .bmp, .css, .csv, .doc, .docx, .flac, .gif, .gz, .gzip, .htm, .html, .ics, .jpe, .jpeg, .jpg, .js, .kml, .kmz, .m4a, .mov, .mp3, .mp4, .mpeg, .mpg, .odp, .ods, .odt, .oga, .ogg, .ogv, .pdf, .pdf, .png, .pps, .pptx, .qt, .svg, .swf, .tar, .text, .tif, .txt, .wav, .webm, .wmv, .xls, .xlsx, .xml, .xsl, .xsd, y .zip.
Variables, operadores y expresiones e identificadores de PHP
Expresiones
Sentencias de control en PHP
Desde PHP 5.4.0, la CLI SAPI provee un servidor web embebido. Las aplicaciones PHP se detendran si la solicitud está bloqueada. Las peticiones de URI se sirven desde el actual directorio de trabajo donde PHP se inició, a menos que la opción -t sea utilizada para especificar una raíz de documentos explícita. Si una petición de URI no especifica un fichero, entonces el index.php o index.html que estén en el directorio dado serán devueltos. Si ninguno de los ficheros existen en el directorio, entonces será devuelto una respuesta de código 404. Si un fichero PHP es proporcionado en la línea de comandos cuando se inicia el servidor web éste es tratado como un script "enrutador". El script es ejecutado al inicio de cada petición HTTP. Si este script devuelve FALSE, entonces el recurso solicitado se devuelve tal cual está. De otra forma la salida del script se devuelve en el navegador. Los tipos MIME estándar son devueltos para ficheros con extensiones: .3gp, .apk, .avi, .bmp, .css, .csv, .doc, .docx, .flac, .gif, .gz, .gzip, .htm, .html, .ics, .jpe, .jpeg, .jpg, .js, .kml, .kmz, .m4a, .mov, .mp3, .mp4, .mpeg, .mpg, .odp, .ods, .odt, .oga, .ogg, .ogv, .pdf, .pdf, .png, .pps, .pptx, .qt, .svg, .swf, .tar, .text, .tif, .txt, .wav, .webm, .wmv, .xls, .xlsx, .xml, .xsl, .xsd, y .zip.
Variables, operadores y expresiones e identificadores de PHP
Variables
Las variables en PHP son representadas con un signo de dólar ($) seguido por el nombre de la variable. El nombre de la variable es sensible a minúsculas y mayúsculas. Es decir, las siguientes declaraciones de variables son distintas entre ellas:
$variable, $Variable, $variAble, $VariAble, etc. representan a distintas variables.
Recordar que una variable es un espacio de la memoria del ordenador (en este caso del servidor) a la que asignamos un contenido que a grandes rasgos puede ser un valor numérico (sólo números, con su valor de cálculo) o alfanumérico (sólo texto o texto con números, sin valor de cálculo).
Para declarar un nombre de variable válido, éste tiene que empezar con una letra (o si no empieza con una letra, tendrá que hacerlo con un carácter de subrayado), seguido de cualquier número de letras, números y caracteres de subrayado, sin espacios. Veamos algunos ejemplos:
Posible nombre de variable
|
Validez
|
$4variable
|
Nombre de variable inválido.
|
$_4variable
|
Nombre de variable válido.
|
$variable4
|
Nombre de variable válido.
|
$otra
|
Nombre de variable válido.
|
$1_otra
|
Nombre de variable inválido.
|
$variable_de_nombre_muy_largo
|
Nombre de variable válido.
|
$ABC
|
Nombre de variable válido.
|
$ A B C
|
Nombre de variable inválido.
|
$A_y_B_x_C
|
Nombre de variable válido.
|
Cuando el intérprete PHP detecta un error en la sintaxis al declarar una variable, cuando tratamos de accecer a la página php nos aparecerá un mensaje de error. Por ejemplo si en un archivo php incluimos una línea como $ A B C = 5; donde el nombre de variable es inválido ya que tiene espacios intermedios, nos aparecerá un mensaje de error:
Parse error: syntax error, unexpected T_STRING, expecting T_VARIABLE or '$' in /home/miraiz/domains/midominio.com/public_html/prueba.php on line 3. Este mensaje nos informa de que hay un problema en el archivo php y nos indica la línea donde el intérprete considera que está el problema.
Operadores de Comparación
Los operadores de comparación se utlilizan, como su nombre lo indica, para hacer comparaciones entre valores (la gran mayoría de las ocasiones guardados en variables) que necesitan desempeñar un papel en nuestro código. En PHP dichos operadores son:
Operador
|
Nombre
|
Ejemplo
|
Resultado
|
= =
|
Igualdad
|
$a = = $b
| Cierto si $a es igual a $b |
= = =
|
Identidad
|
$a= = =$b
| Cierto si $a es igual a $b y si además son del mismo tipo (sólo PHP4 o mayor) |
!=
|
Desigualdad
|
$a != $b
| Cierto si $a no es igual a $b |
<
|
Menor que
|
$a < $b
| Cierto si $a es estrictamente menor que el de $b |
>
|
Mayor que
|
$a > $b
| Cierto si $a es estrictamente mayor que $b |
<=
|
Menor o igual que
|
$a <= $b
| Cierto si $a es menor o igual que $b |
>=
|
Mayor o igual que
|
$a >= $b
| Cierto si $a mayor o igual que $b |
Operadores de Incremento y Decremento
Los operadores de decremento o incremento son de gran utilidad en la programación, sobre todo porque ahorran tiempo, esfuerzo y código. Dichos operadores incrementan o decrementan en uno el valor de la variable a la que se le está aplicando dicho decremento o incremento. Claro está, la utilidad la veremos con un poco más de obviedad a la hora de ver los bucles, en los que de hecho, los operadores de incremento o decremento, hacen su debut triunfal y decididamente impresionante.
En PHP, los operadores de Incremento y Decremento son los siguientes:
OPERADOR
|
NOMBRE
|
EFECTO
|
$a++
|
Postincremento
| Devuelve el valor de $a y luego lo incrementa en uno |
++$a
|
Preincremento
| Incrementa en uno $a y luego devuelve el valor de $a ya incrementado |
$b--
|
Postdecremento
| Devuelve el valor de $b y luego lo decrementa en uno |
--$b
|
Predecremento
| Decrementa en uno $b y luego devuelve el valor de $b ya decrementado |
Operadores Lógicos
Los operadores lógicos son de extrema utilidad a la hora de decidir si un valor y otro o un valor u otro, cumplen con ciertas condiciones. De nuevo, la utilidad de estos operadores los veremos cuando veamos las estructuras de control. En PHP, los operadores lógicos son los siguientes:
Ejemplo
|
Nombre
|
Resultado
|
$a and $b
|
Y
| Cierto sólo si $a y $b son ciertos |
$a or $b
|
O
| Cierto si $a ó $b ó ambos son ciertos |
$a xor $b
|
O exclusiva
| Cierto si $a ó $b son ciertos, pero no si ambos son ciertos a la vez |
!$a
|
Negación
| Cierto si $a no es cierto |
$a&&$b
|
Y
| Cierto sólo si $a y $b son ciertos |
$a||$b
|
O
| Cierto si $a ó $b ó ambos son ciertos |
Siendo que lo más seguro es que se estén preguntando cuál es la diferencia entre and y && o entre or y ||. La respuesta es sencilla, los símbolos && y || son abreviaciones o, más aún, son herencia del lenguaje del cual deriva PHP, es decir C/C++. Dado lo anterior, para todos aquellos que ya tengan experiencia en la programación con C/C++, esta notación les resultará muy familiar.
| Identificadores (Tokens) | ||
T_AND_EQUAL | &= | operadores de asignación |
T_ARRAY | array() | array(), sintaxis de array |
T_ARRAY_CAST | (array) | conversión de tipos |
T_AS | as | foreach |
T_BAD_CHARACTER | todo lo que haya por debajo de ASCII 32 excepto \t (0x09), \n (0x0a) y \r (0x0d) | |
T_BOOLEAN_AND | && | operadores lógios |
T_BOOLEAN_OR | || | operadores lógicos |
T_BOOL_CAST | (bool) o (boolean) | conversión de tipos |
T_BREAK | break | break |
T_CALLABLE | callable | callable |
T_CASE | case | switch |
T_CATCH | catch | Excepciones (disponible desde PHP 5.0.0) |
T_CHARACTER | ya no se utiliza | |
T_CLASS | class | clases y objetos |
T_CLASS_C | __CLASS__ | constantes mágicas |
T_CLONE | clone | clases y objetos |
T_CLOSE_TAG | ?> o %> | salir de HTML |
T_COMMENT | // o #, y /* */ | comentarios |
T_CONCAT_EQUAL | .= | operadores de asignación |
T_CONST | const | constantes |
T_CONSTANT_ENCAPSED_STRING | "foo" o 'bar' | sintaxis de string |
T_CONTINUE | continue | continue |
T_CURLY_OPEN | {$ | sintaxis compleja |
T_DEC | -- | operadores de incremento/decremento |
T_DECLARE | declare | declare |
T_DEFAULT | default | switch |
T_DIR | __DIR__ | constantes mágicas (disponible desde PHP 5.3.0) |
T_DIV_EQUAL | /= | operadores de asignación |
T_DNUMBER | 0.12, etc. | números de punto flotante |
T_DOC_COMMENT | /** */ | comentarios tipo PHPDoc |
T_DO | do | do..while |
T_DOLLAR_OPEN_CURLY_BRACES | ${ | sintaxis compleja |
T_DOUBLE_ARROW | => | sintaxis de array |
T_DOUBLE_CAST | (real), (double) o (float) | conversión de tipos |
T_DOUBLE_COLON | :: | véase T_PAAMAYIM_NEKUDOTAYIM más abajo |
T_ECHO | echo | echo |
T_ELSE | else | else |
T_ELSEIF | elseif | elseif |
T_EMPTY | empty | empty() |
T_ENCAPSED_AND_WHITESPACE | " $a" | parte constante de un string con variables |
T_ENDDECLARE | enddeclare | declare, sintaxis alternativa |
T_ENDFOR | endfor | for, sintaxis alternativa |
T_ENDFOREACH | endforeach | foreach, sintaxis alternativa |
T_ENDIF | endif | if, sintaxis alternativa |
T_ENDSWITCH | endswitch | switch, sintaxis alternativa |
T_ENDWHILE | endwhile | while, sintaxis alternativa |
T_END_HEREDOC | sintaxis de heredoc | |
T_EVAL | eval() | eval() |
T_EXIT | exit o die | exit(), die() |
T_EXTENDS | extends | extends, clases y objetos |
T_FILE | __FILE__ | constantes mágicas |
T_FINAL | final | Palabra clave Final |
T_FINALLY | finally | Excepciones (disponible desde PHP 5.5.0) |
T_FOR | for | for |
T_FOREACH | foreach | foreach |
T_FUNCTION | function o cfunction | funciones |
T_FUNC_C | __FUNCTION__ | constantes mágicas |
T_GLOBAL | global | ámbito de las variables |
T_GOTO | goto | (disponible desde PHP 5.3.0) |
T_HALT_COMPILER | __halt_compiler() | __halt_compiler (disponible desde PHP 5.1.0) |
T_IF | if | if |
T_IMPLEMENTS | implements | Interfaces de objetos |
T_INC | ++ | operadores de incremento/decremento |
T_INCLUDE | include() | include |
T_INCLUDE_ONCE | include_once() | include_once |
T_INLINE_HTML | texto fuera de PHP | |
T_INSTANCEOF | instanceof | operadores de tipo |
T_INSTEADOF | insteadof | Traits (disponible desde PHP 5.4.0) |
T_INT_CAST | (int) o (integer) | conversión de tipos |
T_INTERFACE | interface | Interfaces de objetos |
T_ISSET | isset() | isset() |
T_IS_EQUAL | == | operadores de comparación |
T_IS_GREATER_OR_EQUAL | >= | operadores de comparación |
T_IS_IDENTICAL | === | operadores de comparación |
T_IS_NOT_EQUAL | != o <> | operadores de comparación |
T_IS_NOT_IDENTICAL | !== | operadores de comparación |
T_IS_SMALLER_OR_EQUAL | <= | operadores de comparación |
T_LINE | __LINE__ | constantes mágicas |
T_LIST | list() | list() |
T_LNUMBER | 123, 012, 0x1ac, etc. | números enteros |
T_LOGICAL_AND | and | operadores lógicos |
T_LOGICAL_OR | or | operadores lógicos |
T_LOGICAL_XOR | xor | operadores lógicos |
T_METHOD_C | __METHOD__ | constantes mágicas |
T_MINUS_EQUAL | -= | operadores de asignación |
T_MOD_EQUAL | %= | operadores de asignación |
T_MUL_EQUAL | *= | operadores de asignación |
T_NAMESPACE | namespace | espacios de nombres (disponible desde PHP 5.3.0) |
T_NS_C | __NAMESPACE__ | espacios de nombres (disponible desde PHP 5.3.0) |
T_NS_SEPARATOR | \ | espacios de nombres (disponible desde PHP 5.3.0) |
T_NEW | new | clases y objectos |
T_NUM_STRING | "$a[0]" | array de índice numérico dentro de un string |
T_OBJECT_CAST | (object) | conversión de tipos |
T_OBJECT_OPERATOR | -> | clases y objetos |
T_OPEN_TAG | <?php, <? o <% | salir de HTML |
T_OPEN_TAG_WITH_ECHO | <?= o <%= | salir de HTML |
T_OR_EQUAL | |= | operadores de asignación |
T_PAAMAYIM_NEKUDOTAYIM | :: | ::. También se define como T_DOUBLE_COLON. |
T_PLUS_EQUAL | += | operadores de asignación |
T_PRINT | print() | |
T_PRIVATE | private | clases y objetos |
T_PUBLIC | public | clases y objetos |
T_PROTECTED | protected | clases y objetos |
T_REQUIRE | require() | require |
T_REQUIRE_ONCE | require_once() | require_once |
T_RETURN | return | valores de retorno |
T_SL | << | operadores a nivel de bits |
T_SL_EQUAL | <<= | operadores de asignación |
T_SR | >> | operadores a nivel de bits |
T_SR_EQUAL | >>= | operadores de asignación |
T_START_HEREDOC | <<< | sintaxis de heredoc |
T_STATIC | static | ámbito de las variables |
T_STRING | parent, self, etc. | se comparan identificadores, p.ej. palabras clave comoparent y self, nombres de funciones, nombres de clases y más. Véase también T_CONSTANT_ENCAPSED_STRING. |
T_STRING_CAST | (string) | conversión de tipos |
T_STRING_VARNAME | "${a | sintaxis compleja |
T_SWITCH | switch | switch |
T_THROW | throw | Excepciones |
T_TRAIT | trait | Traits (disponible desde PHP 5.4.0) |
T_TRAIT_C | __TRAIT__ | __TRAIT__ (disponible desde PHP 5.4.0) |
T_TRY | try | Excepciones |
T_UNSET | unset() | unset() |
T_UNSET_CAST | (unset) | conversión de tipos |
T_USE | use | espacios de nombres (disponible desde PHP 5.3.0; reservada desde PHP 4.0.0) |
T_VAR | var | clases y objetos |
T_VARIABLE | $foo | variables |
T_WHILE | while | while, do..while |
T_WHITESPACE | \t \r\n | |
T_XOR_EQUAL | ^= | operadores de asignación |
T_YIELD | yield | generadores (disponible desde PHP 5.5.0) |
Expresiones
Las expresiones regulares en PHP son una potente herramienta de programación que muchas veces se deja de lado ya que se cree que es muy compleja (aunque sí lo puede ser). En este post explicamos de manera sencilla cómo utilizar las expresiones regulares en PHP y brindamos soluciones a ejercicios cotidianos de programación utilizando expresiones regulares. También puede servir como un pequeño recordatorio.
La única salvedad que debemos hacer es que se debe considerar muy bien cuando usar una expresión regular, y no usarlas en exceso. Esto ya que el procesamiento de una expresión regular es considerablemente más costoso que una simple búsqueda de strings (utilizando strstr por ejemplo).
La idea, entonces, de una expresion regular es crear un string especial para hacer una búsqueda en otro string. Si nuestra expresión regular encaja (hace “match”) en el string, la operación es exitosa. Exsite algunos caracteres que tienen un significado especial en una expresión regular:
Metacaracteres
| . | Match con cualquier caracter |
| ^ | Match al principio del string |
| $ | Match al final del string |
| \s | Match con cualquier espacio en blanco |
| \d | Match con cualquier dígito |
| \D | Match con cualquier caracter que no sea un dígito |
| \w | Match con cualquier caracter que pueda ser parte de una palabra (letra, número, guión bajo) |
| \W | Match con cualquier caracter que NO pueda ser parte de una palabra (letra, número, guión bajo) |
| \A | Inicio de un string. |
| \z | Final de un string. |
Cuantificadores
| * | el caracter puede aparecer cero o mas veces. |
| + | el caracter puede aparecer una o mas veces. |
| ? | el caracter puede aparecer cero o una vez. |
| {n} | el caracter aparece exactamente n veces. |
| {n,} | el caracter aparece n o más veces. |
| {n,m} | el caracter puede aparecer entre n y m veces. |
Como parte de la notacion, siempre encerramos las expresiones regulares entre /, llaves ({}) o #. Por ejemplo, la expresion /ab?c/ hace match con ac y abc. La expresión regular /ab{1,3}c/ hace match con abc, abbcy abbbc.
Agrupadores
| [] | permiten agrupar creando rangos, por ejemplo /ab[0-5]+c/ hará match con cualquier string que contenga ab, una o más veces un número entre 0 y 5, y finalmente una c. Por ejemplo: ab12c. |
| () | Nos permiten crear sub-expresiones, expresiones regulares contenidas dentro de otras: /a(bc.)+e/. Tiene un uso especial en formas como (…), que permite capturar todo lo que encierren los paréntesis, y (a|b) que hace match con a o b |
Modificadores
Permiten cambiar el modo en que se ejecute la expresión regular. Se agregan después del delimitador de cierre.
Permiten cambiar el modo en que se ejecute la expresión regular. Se agregan después del delimitador de cierre.
| i | Coincidir indistintamente entre mayúsculas y minúsculas. |
| m | Match multilínea. |
| s | El metacaracter . hará match también con el caracter de cambio de línea. |
| u | Hacer los matches en modo UTF8 |
| x | Ignorar espacios. |
| Otros modificadoresX,e,A,D,S,U,J | |
Tipos de datos en PHP
En PHP no es obligatorio indicar el tipo de datos al que pertenece una variable como en otros lenguajes, sino que los tipos de datos son establecidos directamente por el intérprete PHP, que es el encargado de interpretar el código.
Ahora veremos en una tabla los distintos tipos de datos que se pueden usar en PHP.
TIPO DE DATO
|
DEFINICIÓN
|
integer
|
Los integers, o enteros, pueden tener distintos valores numéricos enteros que se expresan con diferentes notaciones.
$variable = 18; // Número entero positivo
$variable = -18; // Número entero negativo
$variable = 0x12; // Notación hexadecimal, en principio no la utilizaremos
|
float o double
|
Este tipo de datos son los números de punto flotante a los que normalmente llamamos “números decimales”, por ejemplo, 9.876. Ambos tienen mucha precisión, pero double es el más preciso (con más decimales). La sintaxis para utilizarlos es bastante simple:
$variable = 9.876;
|
string
|
El tipo de datos string, también conocido como cadena de caracteres, se expresa con la siguiente sintaxis:
$variable = "Yo soy una cadena";
|
boolean
|
Se trata de un tipo lógico. Sus posibles valores son true (verdadero) o false (falso).
$variable = true;
$variable = false;
|
Las estructuras de control nos permiten controlar el flujo del programa: tomar decisiones, realizar acciones repetitivas etc, dependiendo de unas condiciones que nosotros mismos establezcamos. Así podemos hacer un script que nos salude cada día de la semana de una manera diferente. O por ejemplo hacer un script que nos pida la contraseña una y otra vez hasta que suministremos la opción correcta.
1.- La toma de decisiones if-else:
Quizá la estructura de control más básica y la más utilizada sea if-else:
if (condicion) {
// instrucciones que hay que ejecutar si la condición es verdadera
} else {
// Instrucciones que hay que ejecutar si la condición es falsa
}En castellano sería algo así:Si (Tal cosa es cierta) {
// Haz esto
} En caso contrario {
// Haz esto otro
}Veamos un ejemplo real: En un formulario preguntaremos al usuario como se llama, pasaremos las variables a la página “saludos.php” . En saludos.phpmostraremos un saludo diferente en función de si el usuario soy yo o es cualquier otro
Formulario
<html>
<head>
<title> Ejemplo básico de If </title>
</head>
<body><form action="saludos.php" method="get">
¿Quién eres?<br /><input type="text" name="nombre" />
<input type="submit" name="reset" value=" Enviar " />
</form>
</body>
</html>
saludos.php
<html>
<head>
<title> Ejemplo básico de If </title>
</head>
<body>
<h1> Página de bienvenida</h1>
<?php // Empieza el código php
if ($nombre=="Coder") { // Si el nombre es Coder
echo(" Hombre $nombre! Ya estás cotilleando por aquí otra vez!"); // saludo especial
}else {
echo("Hola, $nombre, gracias por visitarnos"); // saludo para los demás
}
?>
</body>
</html>La cláusula else (la parte del if-else que indica lo que hay que hacer si la condición es falsa) es opcional. No es necesario ponerla. Por ejemplo puedo querer un script que sólo me salude a mi. En este caso, cambiaría saludos.php de la siguiente manera:
<html>
<head>
<title> Ejemplo básico de If </title>
</head>
<body>
<h1> Página de bienvenida</h1>
<?php // empieza el código php
if ($nombre=="Coder") { // Si el nombre es Coder
echo(" Hombre $nombre! Ya estás cotilleando por aquí otra vez!"); // Saludo para Coder
}
?>
</body>
</html>
NOTA: Cuidado con el operador ==, es importante recordar que hay que utilizar un doble signo igual. Si utilizas sólo “=”, estarás utilizando el operador de asignación, es decir estableciendo que $nombre es igual a Coder con lo que la condición siempre sería cierta 
Las condiciones pueden complicarse mucho más, supongamos que queremos dejarte pasar sólo sí además de llamarte Coder, te sabes la contraseña, que en nuestro caso es “foros”:
Formulario:
<html>
<head>
<title> Ejemplo básico de If </title>
</head>
<body><form action="saludos.php" method="get">
¿Quién eres?<br /><input type="text" name="nombre" /><br />¿Y tu Contraseña?<br /><input type="text" name="pass" />
<input type="submit" name="reset" value=" Enviar " />
</form>
</body>
</html>
saludos.php
<html>
<head>
<title> Ejemplo básico de If </title>
</head>
<body>
<h1> Página de bienvenida</h1>
<?php // Empieza el código php
if ($nombre=="Coder" and $pass =="foros") {
// Si el nombre es Coder y la contraseña foros
echo(" Hombre $nombre! Ya estás cotilleando por aquí otra vez!"); // saludo especial
}else {
echo("ahhhhhhhhhhh como no te sabes el nombre y la contraseña, no puedes pasar"); // saludo para los demás
}
?>
</body>
</html>
Además tenemos la instrucción elseif, que como su nombre indica, es una combinación de if y else. Añade una nueva condición en el caso de que la primera fuera falsa y sólo ejecuta las instrucciones si esta nueva condición es verdadera. Es decir,
Veamos un ejemplo:
if ($a > $b) {
// Ejecuta esto si a es Mayor que b
echo("a es mayor que b");} elseif ($a == $b) {
// si a no es mayor que be, comprueba si a es igual a b
echo("a es igual que b");
} else {
// si no se cumplen las anteriores condiciones ejecuta ésta
echo ("a es menor que b");
}
2- Bucles: While
If else nos permitía decidir si queríamos ejecutar o no una instrucción en función de una condición, los bucles nos permiten utilizar una condición para determinar cuantas veces queremos ejecutar una instrucción.:
While (condicion) {// Instrucciones a ejecutar una y otra
//vez mientras la condición sea cierta
}
El funcionamiento es muy parecido al del if-else, la diferencia estriba en que si la condición es cierta y se ejecuta la orden, la condición vuelve a comprobarse una y otra vez mientras siga siendo cierta. En cambio en el cambio del if-else sólo se comprueba la condición una vez, si es cierta se ejecuta la instrucción y se sigue con el programa.
Veamos un ejemplo:
$cantidad = 1;
while ($cantidad < 10) {
echo ("$cantidad ");
$cantidad++;
}
Esto traducido a castellano sería:
$cantidad = 1; $cantidad es igual a uno
while ($cantidad < 10) Mientras el valor de la variable $cantidad sea menor que 10
echo (“$cantidad “); Escribe el valor de cantidad
$cantidad++ (suma 1 al valor que tenga $cantidad, también podríamos haber escrito $cantidad = $cantidad +1)
while ($cantidad < 10) Mientras el valor de la variable $cantidad sea menor que 10
echo (“$cantidad “); Escribe el valor de cantidad
$cantidad++ (suma 1 al valor que tenga $cantidad, también podríamos haber escrito $cantidad = $cantidad +1)
Veamos como funciona el script paso a paso,
$Cantidad es igual a 1
1 es menor que 10
Escribo 1 en pantalla
$cantidad = 2 (1+1)
2 es menor que 10
Escribo 2 en pantalla
$cantidad = 3 (2+1)…
1 es menor que 10
Escribo 1 en pantalla
$cantidad = 2 (1+1)
2 es menor que 10
Escribo 2 en pantalla
$cantidad = 3 (2+1)…
Si ejecutamos este script, en pantalla veríamos 1 2 3 4 5 6 7 8 9
3- Bucles: do While
Los bucles do while, son muy parecidos a los bucles while, sólo que comprobamos si la condición es cierta al final del bucle en lugar de al principio. Así nuestras instrucciones se ejecutan siempre al menos una vez, lo que no ocurre en las condiciones while si la condición es falsa.
$cantidad = 1;
do {
echo ($cantidad);
} while ($cantidad<1);
Traducido sería
$cantidad = 1
do ( // ejecuta
echo ($cantidad); escribe el valor de cantidad
while ($cantidad<1); mientras cantidad sea mayor que 1 -> la condición es falsa luego el programa sale del bucle, pero ha escrito una vez el valor de $cantidad. El resultado en pantalla sería 1
echo ($cantidad); escribe el valor de cantidad
while ($cantidad<1); mientras cantidad sea mayor que 1 -> la condición es falsa luego el programa sale del bucle, pero ha escrito una vez el valor de $cantidad. El resultado en pantalla sería 1
4- Bucles: for
Los bucles for funcionan exactamente igual que en C . Con una sola instrucción controlamos todo el bucle, así que para los vaguetes está muy bien.
for (valor inicial; condicion; ejecutar en cada blucle) {// Instrucciones a ejecutar mientras la condición sea cierta
}
Ejemplo
for ($cantidad = 1; $cantidad <10; $i++) {
echo("$cantidad");
}
Traducido es igual a:
Cantidad es igual a 1, mientras cantidad sea menor que 10 escribe cantidad en pantalla y después súmale 1 al valor de cantidad. Es decir, es exactamente el mismo ejemplo que vimos en el bucle while pero de otra manera.
4- Swich/case
Nos permite ejecutar un bloque de código u otro dependiendo del valor de una variable. Veamos un ejemplo.
Primero para asignar un valor a la variable, vamos a hacernos un formulario:
Primero para asignar un valor a la variable, vamos a hacernos un formulario:
<html>
<head>
<title> Ejemplo de switch </title>
</head>
<body><form action="switch.php" method="get">
¿Quién eres?<br />
<input type="radio" name="quien" value="cgus" /> cgus<br />
<input type="radio" name="quien" value="xela" /> xela<br />
<input type="radio" name="quien" value="adanedhel" /> adanedhel<br />
<input type="radio" name="quien" value="jorgito" /> jorgito<br />
<input type="submit" name="reset" value=" Enviar " />
</form>
</body>
</html>
Switch.php
<html>
<head>
<title>Ejemplo de Swich</title>
</head><?php
switch($quien) {case "cgus": // Primera posibilidad
echo (" $quien es todo un leader ");
break;
case "adanedhel": // segunda posibilidad
echo ("$quien es un elfo");
break;
case "xela": // tercera posibilidad
echo ("$quien es normal");
break;
default: // Posiblidad si no es ninguna de las anteriores
echo ("$quien es un desconocido");
}
?>
</body>
</html>
Declaración de funciones en PHP
Una de las herramientas más importantes en cualquier lenguaje de programación son las funciones. Una función es un conjunto de instrucciones que a lo largo del programa van a ser ejecutadas multitud de veces. Es por ello, que este conjunto de instrucciones se agrupan en una función. Las funciones pueden ser llamadas y ejecutadas desde cualquier punto del programa.
Además, una función puede recibir parámetros externos de los cuales dependa el resultado de dicha función. Es decir, según el parámetro o parámetros con los que se invoque a la función, ésta devolverá un resultado u otro.
Las funciones deben estar definidas antes de realizar la llamada a la función (como es lógico).
Sintaxis general para declarar una función en PHP
function nombre (parámetro1, parámetro2, …, parámetroN) {
instrucción1
instrucción2
.
.
.
instrucciónN
}
|
Para llamar (hacer que se ejecute) la función usaremos esta sintaxis: nombre(par1, par2, par3, …, parN); donde par1, par2, par3, …, parN son los parámetros (información) que le pasamos a la función. Una función puede necesitar de ningún, uno o varios parámetros para ejecutarse.
Arreglos
Se define a un arreglo como un grupo de elementos relacionados entre sí por medio de índices. Los arreglos pueden ser de una o más dimensiones, los de una dimensión, son llamados comúnmente "vectores".
A diferencia con el lenguaje C, en PHP, un vector puede tener elementos de distintos tipos.
Para hacer referencia a un elemento del vector, se utiliza un índice, que indica la dirección en donde se encuentra un determinado valor. El índice en un arreglo comienza siempre por cero. (Mas adelante se verá que el índice de un vector, no necesariamente debe ser un número entero, sino que también puede ser un texto).
A diferencia con el lenguaje C, en PHP, un vector puede tener elementos de distintos tipos.
Para hacer referencia a un elemento del vector, se utiliza un índice, que indica la dirección en donde se encuentra un determinado valor. El índice en un arreglo comienza siempre por cero. (Mas adelante se verá que el índice de un vector, no necesariamente debe ser un número entero, sino que también puede ser un texto).
Ejemplo Práctico 1:
Almacenar los nombres de los días de la semana en un vector y luego imprimirlos uno debajo de otro.
Almacenar los nombres de los días de la semana en un vector y luego imprimirlos uno debajo de otro.
<Html>
<Title> Ejmeplo 1 </Title>
<Body>
<?PHP
// Inicializacion del Vector
<Title> Ejmeplo 1 </Title>
<Body>
<?PHP
// Inicializacion del Vector
$dia[0] = "Domingo";
$dia[1] = "Lunes";
$dia[2] = "Martes";
$dia[3] = "Miércoles";
$dia[4] = "Jueves";
$dia[5] = "Viernes";
$dia[6] = "Sábado";
$dia[1] = "Lunes";
$dia[2] = "Martes";
$dia[3] = "Miércoles";
$dia[4] = "Jueves";
$dia[5] = "Viernes";
$dia[6] = "Sábado";
// Impresion del vector
for($i=0; $i<7; $i++)
{
echo ($dia[$i] . "<Br>") ;
}
?>
</Body>
</Html>
{
echo ($dia[$i] . "<Br>") ;
}
?>
</Body>
</Html>
Comentario:
Se inicializa el vector indicando el número que le corresponde a cada posición entre corchetes [ ] y asignando el valor que se desea almacenar en dicha posición.
Se inicializa el vector indicando el número que le corresponde a cada posición entre corchetes [ ] y asignando el valor que se desea almacenar en dicha posición.
Un vector, en PHP, puede contener elementos de distintos tipos de datos, es decir, un elemento puede ser un número entero, otro una cadena, otro un número con decimales, etc.
Un modelo de este caso se puede observar en el siguiente ejemplo.
Un modelo de este caso se puede observar en el siguiente ejemplo.
Ejemplo Práctico 2:
Almacenar en un vector los datos personales de un empleado y luego mostrarlos en pantalla.
Almacenar en un vector los datos personales de un empleado y luego mostrarlos en pantalla.
<Html>
<Title> Ejemplo 2 </Title>
<Body>
<?PHP
// Inicializacion del Vector
<Title> Ejemplo 2 </Title>
<Body>
<?PHP
// Inicializacion del Vector
$Empleado[0] = 4371;
$Empleado[1] = "Martinez Leandro";
$Empleado[2] = "27.643.742";
$Empleado[3] = 1429.54;
$Empleado[4] = "Arquitecto";
$Empleado[1] = "Martinez Leandro";
$Empleado[2] = "27.643.742";
$Empleado[3] = 1429.54;
$Empleado[4] = "Arquitecto";
// Impresion del vector
echo ("Legajo: " . $Empleado[0] . "<Br>");
echo ("Nombre: " . $Empleado[1] . "<Br>");
echo ("DNI : " . $Empleado[2] . "<Br>");
echo ("Sueldo: " . $Empleado[3] . "<Br>");
echo ("Profesion: " . $Empleado[4] . "<Br>");
?>
</Body>
</Html>
echo ("Nombre: " . $Empleado[1] . "<Br>");
echo ("DNI : " . $Empleado[2] . "<Br>");
echo ("Sueldo: " . $Empleado[3] . "<Br>");
echo ("Profesion: " . $Empleado[4] . "<Br>");
?>
</Body>
</Html>
Existen varias maneras de inicializar vectores en PHP. A continuación se describen algunos ejemplos.
Pais[] = "Argentina";
Pais[] = "Uruguay";
Pais[] = "Brasil";
Pais[] = "Chile";
Pais[] = "Uruguay";
Pais[] = "Brasil";
Pais[] = "Chile";
En este caso se observa que no es necesario colocar el número de índice, ya que PHP lo asigna automáticamente para cada valor, comenzando siempre desde cero.
Otra forma de inicializar un vector, es a través del constructor array, como se muestra en el siguiente ejemplo:
Otra forma de inicializar un vector, es a través del constructor array, como se muestra en el siguiente ejemplo:
Pais =array("Argentina","Uruguay","Brasil","Chile");
También se puede definir un arreglo asociando explícitamente el índice a un valor, como se indica a continuación:
$Frutas = array(0 => "Manzana",
1 => "Naranja",
2 => "Pera",
3 => "Ananá");
1 => "Naranja",
2 => "Pera",
3 => "Ananá");
Además, los índices, pueden no ser obligatoriamente consecutivos, ni tampoco comenzar de cero, ni tampoco ser un número. (Ver ejemplos mas adelante).
Se puede conocer la cantidad de elementos que tiene un vector, para ello se utiliza la función count(vector). Esta función acepta como parámetro el nombre del vector y devuelve la cantidad de elementos del mismo.
Se puede conocer la cantidad de elementos que tiene un vector, para ello se utiliza la función count(vector). Esta función acepta como parámetro el nombre del vector y devuelve la cantidad de elementos del mismo.
Conectividad a bases de datos usando PHP
Acceso a bases de datos MySQL desde PHP
El sistema de acceso y manipulación de bases de datos desde PHP es similar al de otros lenguajes de script: establece la conexión con la base de datos, ejecuta las sentencias de consulta o modificación y finalmente cierra la conexión.
PHP soporta compatibilidad con accesos a múltiples sistemas de bases de datos, sin embargo, el modo de programación sobre cada tipo de base de datos, no presenta, como en otros casos, la misma nomenclatura. PHP utiliza funciones de nombre genérico, pero precedidas normalmente por el nombre del sistema de base de datos, de modo que las funciones que ofrece el lenguaje para el acceso a cada tipo de base de datos son diferentes.
Establecimiento de conexión con bases de datos MySQL
Para establecer la conexión con una base de datos MySQL desde PHP, se utiliza la función:
mysql_connect("NombreHost","Usuario","Contraseña")
cuyos parámetros son opcionales, e indican el nombre del servidor -o IP del mismo- (‘NombreHost’) donde se encuentra la base de datos, el ‘Usuario’ de acceso a la base de datos, y la ‘Contraseña’ de acceso. En caso de éxito la función devuelve un identificador del enlace con el sistema de bases de datos.
Una vez establecida la conexión, hay que indicar al sistema, la base de datos con la que se desea trabajar, usando la función:
mysql_select_db("NombreBaseDatos")
Y finalmente, para cerrar la conexión utilizamos:
mysql_close($conexion)
donde debemos pasarle como parámetro el enlace con la conexión inicialmente establecida.
Ejemplo:
<?php
#Conectamos con MySQL
$conexion = mysql_connect("NombreHost","Usuario","Contraseña")
or die ("Fallo en el establecimiento de la conexión");
#Seleccionamos la base de datos a utilizar
mysql_select_db("NombreBaseDatos")
or die("Error en la selección de la base de datos");
# ################################### #
# Aquí insertaríamos las consultas sobre la base de datos #
# ################################### #
#Cerramos la conexión con la base de datos
mysql_close($conexion);
?>
Consultas sobre bases de datos MySQL
Para efectuar consultas sobre una base de datos MySQL, se utiliza en PHP la función:
mysql_query($sql, $conexion)
que toma como parámetros, una cadena con la consulta SQL a ejecutar (SELECT, INSERT, DELETE, etc.), y el enlace con la base de datos (opcional). Devuelve un identificador del resultado en caso de éxito o FALSE en caso de error en la consulta.
Solo con la ejecución de la consulta sobre la base de datos, no podemos presentar el resultado de la misma. Para poder mostrar información resultante de una consulta deberemos hacer uso de funciones complementarias. Una de las posibles es:
mysql_fetch_array($id_resultado)
que devuelve un array con el resultado de la sentencia extraída identificada por el parámetro facilitado.
Ejemplo:
<?php
#Conectamos con MySQL
$conexion = mysql_connect("NombreHost","Usuario","Contraseña")
or die ("Fallo en el establecimiento de la conexión");
#Seleccionamos la base de datos a utilizar
mysql_select_db("NombreBaseDatos")
or die("Error en la selección de la base de datos");
#Efectuamos la consulta SQL
$result = mysql_query ("select * from personal" )
or die("Error en la consulta SQL");
#Mostramos los resultados obtenidos
while( $row = mysql_fetch_array ( $result )) {
echo $row [ "id" ];
echo $row [ "nombre" ];
}
?>
Dispone de completa información y ejemplos de las funciones PHP asociadas a MySQL en la web de PHP.net.
Acceso a bases de datos PostgreSQL desde PHP
El sistema de acceso a bases de datos PostgreSQL desde PHP es similar al usado para el acceso a bases de datos MySQL. Solo cambian los nombres de las funciones utilizadas, pero siguen la misma estructura. En los siguientes apartados vemos con más detalle las sentencias a utilizar.
Conexión con bases de datos PostgreSQL
Para establecer la conexión con una base de datos PostgreSQL desde PHP, se utiliza la función:
pg_connect("host=NombreHost dbname=BaseDatos user=Usuario
password=Contraseña")
cuyos parámetros, pasados como una cadena única, indican el nombre del servidor -o IP del mismo- ‘NombreHost’ donde se encuentra la base de datos, el nombre de la base de datos ‘BaseDatos’, el ‘Usuario’ de acceso a la base de datos, y la ‘Contraseña’ de acceso. En caso de éxito la función devuelve un identificador del enlace con el sistema de bases de datos.
A diferencia de MySQL, no es preciso indicar con otra función la base de datos a la que se desea acceder, ya que se ha facilitado como parámetro a la función de conexión.
Finalmente, para cerrar la conexión utilizamos:
pg_close($conexion)
donde debemos pasarle como parámetro el enlace con la conexión inicialmente establecida.
Ejemplo:
<?php
#Conectamos con PostgreSQL
$conexion = pg_connect("host=192.168.0.3 dbname=BaseDatos user=Usuario
password=Contraseña") or
die ("Fallo en el establecimiento de la conexión");
# ################################### #
# Aquí insertaríamos las consultas sobre la base de datos #
# ################################### #
#Cerramos la conexión con la base de datos
pg_close($conexion);
?>
Consultas sobre bases de datos PostgreSQL
Para efectuar consultas sobre una base de datos PostgreSQL, se utiliza en PHP la función:
pg_query($conexion, $sql)
que toma como parámetros, el enlace con la base de datos y una cadena con la consulta SQL a ejecutar (SELECT, INSERT, DELETE, etc.). Devuelve un identificador del resultado en caso de éxito o FALSE en caso de error en la consulta.
Solo con la ejecución de la consulta sobre la base de datos, no podemos presentar el resultado de la misma. Para poder mostrar información resultante de una consulta deberemos hacer uso de funciones complementarias. Una de las posibles es:
pg_fetch_array($id_resultado, $fila)
que devuelve la fila ‘$fila’ en forma de array con el resultado de la sentencia extraída identificada por el parámetro ‘$id_resultado’.
Ejemplo:
<?php
#Conectamos con PostgreSQL
$conexion = pg_connect("host=192.168.0.3 dbname=BaseDatos user=Usuario
password=Contraseña") or
die ("Fallo en el establecimiento de la conexión");
#Efectuamos la consulta SQL
$result = pg_query ($conexion, "select * from personal" )
or die("Error en la consulta SQL");
#Mostramos los resultados obtenidos
$i=0;
while( $row = mysql_fetch_array ( $result,$i )) {
echo $row [ "id" ];
echo $row [ "nombre" ];
$i++;
}
?>
No hay comentarios:
Publicar un comentario