jueves, 8 de septiembre de 2016

Unidad 3 Curso de PHP

Arrays
Un array (matriz) en PHP es en realidad un mapa ordenado. Un mapa es un tipo de datos que asocia valores con claves. Este tipo es optimizado para varios usos diferentes; puede ser usado como una matriz real, una lista (vector), tabla asociativa (caso particular de implementación de un mapa), diccionario, colección, pila, cola y probablemente más. Ya que los valores de un array pueden ser otros arrays, también es posible crear árboles y arrays multidimensionales.
Una explicación sobre tales estructuras de datos se encuentra por fuera del propósito de este manual, pero encontrará al menos un ejemplo de cada uno de ellos. Para más información, consulte la extensa literatura que existe sobre este amplio tema.
<?php
$arr 
= array("foo" => "bar", 12 => true);

echo 
$arr["foo"]; // bar
echo $arr[12];    // 1
?>

<?php
$arr 
= array("somearray" => array(6 => 5, 13 => 9, "a" => 42));

echo 
$arr["somearray"][6];    // 5
echo $arr["somearray"][13];   // 9
echo $arr["somearray"]["a"];  // 42
?>

<?php
         $a = array(
                  "manzana"  => array(
                            "color"  => "rojo",
                            "sabor"  => "dulce",
                            "forma"  => "redondeada"
                  ),
                  "naranja"  => array(
                            "color"  => "naranja",
                            "sabor"  => "ácido",
                            "forma"  => "redondeada"
                  ),
                  "plátano"  => array(
                            "color"  => "amarillo",
                            "sabor"  => "paste-y",
                            "forma"  => "aplatanada"
                  )
         );
         
         echo $a["manzana"]["sabor"];    # devolverá "dulce"
 ?>

OPERADORES

Aritméticos:

Ejemplo
Nombre
Resultado
$a + $b
Adición
Suma de $a y $b
$a - $b
Substracción
Diferencia entre $a y $b
$a * $b
Multiplicación
Producto de $a and $b
$a / $b
División
Cociente de $a entre $b
$a % $b
Módulo
Resto de $a dividido entre $b

Relacionales:

Ejemplo
Nombre
Resultado
$a == $b
Igualdad
Cierto si $a es igual a $b
$a === $b
Identidad
Cierto si $a es igual a $b y si son del mismo tipo (sólo PHP4)
$a != $b
Desigualdad
Cierto si $a no es igual a $b
$a < $b
Menor que
Cierto si $a es estrictamente menor que $b
$a > $b
Mayor que
Cierto si $a es estrictamente mayor que $b
$a <= $b
Menor o igual que
Cierto si $a es menor o igual que $b
$a >= $b
Mayor o igual que
Cierto si $a es mayor o igual que $b

Incremento/decremento:

Ejemplo
Nombre
Resultado
++$a
Preincremento
Incrementa $a en uno y después devuelve $a
$a++
Postincremento
Devuelve $a y después incrementa $a en uno
--$a
Predecremento
Decrementa $a en uno y después devuelve $a
$a--
Postdecremento
Devuelve $a y después decrementa $a en uno

Lógicos:

Ejemplo
Nombre
Resultado
$a and $b
Y
Cierto si tanto $a como $b son ciertos
$a or $b
O
Cierto si $a o $b son ciertos
$a xor $b
O exclusiva
Cierto si $a es cierto o $b es cierto, pero no ambos a la vez
! $a
Negación
Cierto si $a no es cierto
$a && $b
Y
Cierto si tanto $a como $b son ciertos
$a || $b
O
Cierto si $a o $b son ciertos.



ESTRUCTURAS DE CONTROL

if:

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

<?php
            if (expr)
                        sentencia
?>

else:

A menudo queremos ejecutar una sentencia si se cumple una cierta condición, y una sentencia distinta si la condición no se cumple. Esto es para lo que sirve else. else extiende una sentencia if para ejecutar una sentencia en caso de que la expresión en la sentencia if se evalúe como FALSE. Por ejemplo, el siguiente código mostraría a es mayor que b si $a fuera mayor que $b, y a NO es mayor que b en cualquier otro caso:

<?php
            if ($a > $b)
            {
                        print "a es mayor que b";
            }
             else
            {
                         print "a NO es mayor que b";
            }
?>


switch:

<?php
                if ($i == 0)
                {
                               print "i es igual a 0";
                }
                if ($i == 1)
                {
                               print "i es igual a 1";
                }
                if ($i == 2)
                {
                               print "i es igual a 2";
                }
?>

<?php
                switch ($i)
                 {
                               case 0:
                                               print "i es igual a 0";
                                               break;
                                case 1:
                                                print "i es igual a 1";
                                               break;
                                case 2:
                                                print "i es igual a 2";
                                               break;
                }
?>



while:

Los bucles while son los tipos de bucle más simples en PHP. Se comportan como su contrapartida en C. La forma básica de una sentencia while es:

<?php
            while (expr)
                        sentencia
?>
do while:

Los bucles do..while son muy similares a los bucles while, excepto que las condiciones se comprueban al final de cada iteración en vez de al principio. La principal diferencia frente a los bucles regulares while es que se garantiza la ejecución de la primera iteración de un bucle do..while (la condición se comprueba sólo al final de la iteración), mientras que puede no ser necesariamente ejecutada con un bucle while regular (la condición se comprueba al principio de cada iteración, si esta se evalúa como FALSE desde el principio la ejecución del bucle finalizará inmediatamente).

<?php
            do
            {
                        if ($i < 5)
                        {
                                   print "i no es lo suficientemente grande";
                                   break;
                        }
                        $i *= $factor;
                        if ($i < $minimum_limit)
                        {
                                   break;
                        }
                        print "i es correcto"; ...procesa i...
            }
            while(0); ?>
for:

Los bucles for son los bucles más complejos en PHP. Se comportan como su contrapartida en C. La sintaxis de un bucle for es:

<?php
            for (expr1; expr2; expr3)
                        sentencia
 ?>





foreach:

PHP4 (PHP3 no) incluye una construcción foreach, tal como perl y algunos otros lenguajes. Esto simplemente da un modo fácil de iterar sobre arrays. Hay dos sintaxis; la segunda es una extensión menor, pero útil de la primera:

Nota: Cuando foreach comienza su primera ejecución, el puntero interno a la lista (array) se reinicia automáticamente al primer elemento del array. Esto significa que no se necesita llamar a reset() antes de un bucle foreach.
Nota: Hay que tener en cuanta queforeach con una copia de la lista (array) especificada y no la lista en si, por ello el puntero de la lista no es modificado como en la construcción each.

<?php
             foreach(expresion_array as $value)
                        sentencia
            foreach(expresion_array as $key => $value)
                        sentencia
 ?>

break:

break escapa de la estructuras de control iterante (bucle) actuales for, while, o switch.

break accepta un parámetro opcional, el cual determina cuantas estructuras de control hay que escapar

<?php
            $arr = array ('one', 'two', 'three', 'four', 'stop', 'five');
             while (list (, $val) = each ($arr))
             {
                         if ($val == 'stop')
                         {
                                   break; /* Tambien se puede escribir 'break 1;' here. */
                        }
                        echo "$val<br>\n";
            }
?>



continue:

continue se usa dentro de la estructura del bucle para saltar el resto de la iteración actual del bucle y continuar la ejecución al comienzo de la siguiente iteración.

continue accepta un parámetro opcional, el cual determina cuantos niveles (bluces) hay que saltar antes de continuar con la ejecución.

while (list($key,$value) = each($arr))
            {
                        if ($key % 2)
                        {
                                    // salta los miembros impares continue;
                        }
                        do_something_odd ($value);
            }
            $i = 0;
            while ($i++ < 5)
            {
                        echo "Outer<br>\n";
                        while (1)
                        {
                                   echo "  Middle<br>\n";
                                   while (1)
                                   {
                                               echo "  Inner<br>\n";
                                               continue 3;
                                   }
                                   echo "This never gets output.<br>\n";
                        }
                        echo "Neither does this.<br>\n";
            }

require y Include:

La sentencia require() se sustituye a sí misma con el archivo especificado, tal y como funciona la directiva #include de C.

Un punto importante sobre su funcionamiento es que cuando un archivo se incluye con include() o se requiere con require()), el intérprete sale del modo PHP y entra en modo HTML al principio del archivo referenciado, y vuelve de nuevo al modo PHP al final. Por esta razón, cualquier código dentro del archivo referenciado que debiera ser ejecutado como código PHP debe ser encerrado dentro de etiquetas válidas de comienzo y fin de PHP.

<?php
            require( “header.inc” );
?>
<?php
            include( “header.inc” ); ?>
FUNCIONES

Parámetros de las Funciones:

Pasar parámetros por referencia :

Por defecto, los parámetros de una función se pasan por valor (de manera que si cambias el valor del argumento dentro de la función, no se ve modificado fuera de ella). Si deseas permitir a una función modificar sus parámetros, debes pasarlos por referencia.

Si quieres que un parámetro de una función siempre se pase por referencia, puedes anteponer un ampersand (&) al nombre del parámetro en la definición de la función:

function add_some_extra(&$string)
{
            $string .= ' y algo más.';
}
 $str = 'Esto es una cadena, ';
add_some_extra($str);
echo $str;

function foo ($bar)
{
            $bar .= ' y algo más.';
}
$str = 'Esto es una cadena, ';
foo ($str);
echo $str;
foo (&$str);
echo $str;

Parámetros por defecto :

Una función puede definir valores por defecto para los parámetros escalares estilo C++:
El valor por defecto tiene que ser una expresión constante, y no una variable o miembro de una clase.

function makecoffee ($type = "cappucino")
{
            return "Hacer una taza de $type.\n";
}
echo makecoffee ();
echo makecoffee ("espresso");

Lista de longitud variable de parámetros :

PHP4 soporta las listas de longitud variable de parámetros en las funciones definidas por el usuario. Es realmente fácil, usando las funciones func_num_args(), func_get_arg(), y func_get_args().

No necesita de ninguna sintaxis especial, y las listas de parámetros pueden ser escritas en la llamada a la función y se comportarán de la manera esperada.

func_num_args

int func_num_args (void );

Devuelve el número de argumentos pasados a la función actual definida por el usuario.
func_num_args() generará un aviso si es llamada desde fuera de la definición de la función.

func_get_arg

int func_get_arg (int arg_num);

Devuelve el argumento que está en la posición arg_num en la lista de argumentos de una función definida por el usuario. Los argumentos de la función se cuentan comenzando por la posición cero. func_get_arg() generará un aviso si se llama desde fuera de la definición de la función.

Si arg_num es mayor que el número de argumentos pasados realmente, se generará un aviso y func_get_arg() devolverá FALSE.

func_get_args

int func_get_args (void );

Devuelve un array en el que cada elemento es el miembro correspondiente de la lista de argumentos de la función definida por el usuario actual. func_get_args() generará un aviso si es llamada desde fuera de la definición de la función.




Unidad 2 Curso PHP

SERVIDOR APACHE

ALGUNAS DIRECTIVAS DE CONFIGURACIÓN:


ServerRoot

La directiva ServerRoot es el directorio raíz donde se almacenan los distintos ficheros que utiliza el servidor Apache. Es importante no añadir una barra al final del nombre del último directorio.

Listen

La directiva Listen indica las direcciones IP y los puertos en los que debe escuchar Apache; por defecto, el servidor responde a las peticiones que se reciban en cualquier dirección IP de las interfaces de red. El uso de Listen es ahora obligatorio. Si no está en el fichero de configuración, el servidor no podrá iniciarse. Esto supone un cambio respecto a las versiones anteriores de Apache.

La directiva Listen le especifica al servidor los puertos o las combinaciones de direcciones y puertos cuyas peticiones debe aceptar. Si solamente se especifica un número de puerto, el servidor escuchará en ese puerto, en todas las interfaces de red. Si se especifica una dirección IP y un puerto, el servidor escuchará solamente en esa dirección IP y en ese puerto.

Se pueden usar varias directivas Listen para especificar varias direcciones y puertos de escucha. El servidor responderá a peticiones de cualquiera de esas direcciones y puertos.
Por ejemplo, para hacer que el servidor acepte conexiones en los puertos 80 y 8000, use:

Listen 80
Listen 8000

Para hacer que el servidor acepte conexiones en dos direcciones y puertos diferentes, use:

Listen 192.170.2.1:80
Listen 192.170.2.5:8000

Timeout

Timeout indica el número de segundos antes de que se cancele una conexión por falta de respuesta.
KeepAlive
El comando KeepAlive determina si el servidor permitirá varias conexiones a la vez (p.e., más de una petición por conexión). KeepAlive puede usarse para impedir que un cliente consuma muchos recursos del servidor. El comando KeepAlive aparece ya en on por defecto, lo que significa que se permiten varias conexiones a la vez. Puede ponerse en off para desactivarlas. Consulte la sección de nombre MaxKeepAliveRequests para conocer un método alternativo para limitar las peticiones.
MaxKeepAliveRequests
Esta directiva establece el número máximo de peticiones permitidas por cada conexión que se produzca a la vez. El Grupo Apache recomienda un valor alto, lo que mejoraría el rendimiento. El valor predeterminado del comando MaxKeepAliveRequests es de 100 que debería bastar en la mayoría de los casos.
MaxClients
El comando MaxClients establece un límite al total de los procesos del servidor (es decir, clientes conectados simultáneamente) que se ejecutan a la vez. Debe mantener el comando MaxClients a un valor alto (el valor por defecto es 150), porque no se permitirán nuevas conexiones una vez que se alcance el número máximo de clientes simultáneamente conectados. El valor del comando MaxClients no puede superar el 256 sin que se haya recompilado Apache. La principal razón de tener el parámetro MaxClients es evitar que un servidor errático vuelva inestable al sistema operativo.
Dynamic Shared Object (DSO) Support
LoadModule php6_module C:/AppServ\php6\php6apache2_2.dll
Aquí se realiza la carga de los módulos de apache, al cargar el modulo de php, apache podrá hacer uso del interprete php. Se debe verificar que la librería php6apache2_2.dll se encuentre la ruta indicada, y este relacionada con la versión de apache instalada, ya que de otra forma el servidor no podrá levantar.
ServerAdmin
Especifica la dirección de e-mail que el servidor incluye en cualquier mensaje de error que envía al cliente.
Sería conveniente tener una dirección de email solo para esto, por ejemplo:
ServerAdmin www-admin@foo.example.com
Ya que los usuarios no siempre mencionan que están hablando del servidor
ServerName
Especifica el nombre de host y el puerto que usa el servidor para identificarse. Esto se usa cuando se hace redirección de URLs. Por ejemplo, si el nombre de la maquina del servidor web es simple.example.com, pero el la maquina también tiene el alias DNS www.example.com y quiere que el servidor web se identifique así, debe usar la siguiente directiva:
ServerName www.example.com:80
DocumentRoot
Esta directiva especifica el directorio desde el cuál httpd servirá los ficheros. A menos que especifique alguna otra equivalencia mediante una directiva Alias, el servidor añade la ruta de la URL solicitada a este directorio para construir la ruta del documento a servir. Ejemplo:
DocumentRoot /usr/web
Esto quiere decir que una petición de acceso a http://www.my.host.com/index.html se refiere a /usr/web/index.html en el sistema de ficheros.
El directorio que especifique en DocumentRoot debe escribirlo sin barra al final.
Si se altera DocumentRoot se debe alterar tambien <Directory "C:/AppServ/www">.

IfModule dir_module

<IfModule dir_module>
    DirectoryIndex index.php index.html index.htm
</IfModule>

Aquí se especifica cual será el script inicial que se presentara en el navegador al intentar entrar la ruta publicada por apache, especificada en DocumentRoot.


INTERPRETE PHP

ALGUNAS DIRECTIVAS DE CONFIGURACIÓN:


short_open_tag

Indica a PHP si las etiquetas cortas (<? ?>) de apertura de PHP están activadas. Si por lo contrario está desactivado, debe usar siempre la forma larga de abrir la etiqueta PHP (<?php ?>).

asp_tags

Activa el uso de las etiquetas igual que ASP <% %> además de las normales <?php ?>. Esto incluye la forma corta variable-valor <%= $value %>

precision

El número de dígitos que se muestran después de la coma flotante.

y2k_compliance

Asegura la compatibilidad con el año 2000 (causará problemas con navegadores no compatibles)

register_globals
Registre o no registre las variables EGPS (Entorno, GET, POST, Cookie, Server) son globales.
En » PHP 4.2.0, esta directiva está por defecto off.
Por favor, note que register_globals no puede ser definido en tiempo de ejecucción (ini_set()). Aún así, puede usar .htaccess si el servidor se lo permite, tal como se muestra debajo. Un ejemplo de entrada .htaccess: php_flag register_globals off.

Esta opción ha sido declarada OBSOLETA desde PHP 5.3.0. Su uso está totalmente desaconsejado.
Quizás el cambio más controversial en PHP fue cuando el valor predeterminado para la directiva de PHP register_globals pasó de ON a OFF en PHP » 4.2.0. La dependencia sobre esta directiva era bastante común y muchas personas ni siquiera sabía que existía y asumían sólo que ese era el modo como PHP funcionaba. Esta página explicará cómo se puede escribir código inseguro con esta directiva, pero tenga en cuenta que la directiva en si misma no es insegura sino el uso inapropiado de ella.
Cuando está activada, register_globals inyectará los scripts con todo tipo de variables, como las de peticiones provenientes de formularios HTML. Esto, unido al hecho de que PHP no requiere la inicialización de variables, significa que es muy fácil escribir código inseguro. Fue una decisión difícil, pero la comunidad de PHP decidió desactivar esta directiva por defecto. Cuando está activada, las personas usan variables que en realidad no se sabe a ciencia cierta de dónde provienen y solo queda asumir. Las variables internas que son definidas en el script mismo son mezcladas con los datos requeridos enviados por los usuarios y al deshabilitar register_globals se cambia esto.
<?php
// $authorized = true Se define sólo si el usuario está autenticado
if (authenticated_user()) {
    
$authorized = true;
}

// Debido a que no se inicializa $authorized como false, esta podría ser
// definida a través de register_globals, como desde GET auth.php?authorized=1
// ¡Por lo tanto, cualquier persona puede verse como autenticada!
if ($authorized) {
    include 
"/highly/sensitive/data.php";
}
?>




register_long_arrays

Dice a PHP cuando o no registrar las obsoletas variables predefinidas del tipo $HTTP_*_VARS Cuando esté activado, variables largas como $HTTP_GET_VARS estarán definidas. Si no las utiliza, se recomienda desactivarlas, por razones de rendimiento. En su lugar, puede usar las Arrays superglobales, como $_GET. Esta directiva empezó a estar disponible en PHP 5.0.0.

Esta opción ha sido declarada OBSOLETA desde PHP 5.3.0. Su uso está totalmente desaconsejado.

post_max_size

Define el tamaño máximo de datos post permitidos. Esta opción también afecta a la subida de ficheros. Para poder subir ficheros grandes, este valor de ser mayor que upload_max_filesize. Si el límite de memoria está activado en su script de configuración, memory_limit también afecta la subida de ficheros. Por norma general, memory_limit debe ser mayor que post_max_size.

upload_max_filesize

El tamaño máximo a subir un fichero.

memory_limit

Establece el máximo de memoria en bytes que un script puede consumir. Ayuda a prevenir que scripts mal programados consuman toda la memoria disponible en el servidor. Nota para no tener límite de memoria, establezca esta directiva a -1.


max_execution_time

Este valor establece el tiempo máximo en segundos que se permite ejecutar antes de que el analizador termine. Esto ayuda a prevenir que scripts mal escritos bloqueen el servidor. El valor por defecto es 30.

max_input_time

Establece el tiempo máximo en segundos que se permite a un script analizar datos de entrada, como POST, GET. Se mide desde el momento de recepción de todos los datos en el servidor hasta el inicio de la ejecución del script.

upload_tmp_dir
Directorio temporal usado para guardar los ficheros durante el proceso de subida. Debe tener permisos de escritura para el usuario que está ejecutando PHP. Si no está especificado PHP usará el predeterminado del sistema.
Si el directorio especificado no tiene permisos de escritura PHP volverá al directorio temporal del sistema por defecto. Si la directiva open_basedir está habilitada, entonces el directorio del sistema por defecto debe permitir la subida de ficheros para que funcione.
error_reporting
Establece el nivel de notificación de errores. El parámetro es un valor de tipo integer que representa un campo de bits, o constantes nominadas. Los niveles de error_reporting y constantes están descritos en Constantes Predefinidas, y en php.ini. Para establecerlo en tiempo de ejecución, use la función error_reporting(). Vea también la directiva display_errors.
display_errors
Determina si los errores deberían ser impresos en pantalla como parte de la salida o si deberían ocultarse al usuario.


INTERPRETE PHP

SALIENDO DE HTML / INSTRUCCIÓN SEPARADOR / COMENTARIO / VARIABLES / TIPOS DE DATOS / CONSTANTES
Saliendo de HTML
Cuando PHP interpreta un fichero, buscar por las etiquetas de apertura y fin de bloque, que dicen a PHP donde empezar y finalizar la interpretación del código. Este mecanismo permite a PHP ser incrustado en todo tipo de documentos, todo lo que esté fuera de las etiquetas de PHP será ignorado por el interpretador. La mayoría de veces se encontrará con PHP incrustado en documentos HTML, como se muestra en este ejemplo.
<p>Este texto va a ser ignorado.</p>
<?php echo 'Mientras que esto va a ser interpretado.'; ?>
<p>Esto también será ignorado.</p>
También se pueden usar estructuras más avanzadas:

<?php
if ($expression) {
    
?>
    <strong>Esto es verdadero.</strong>
    
<?php
} else {
    
?>
    <strong>Esto es falso.</strong>
    
<?php
}
?>

Instrucción separador
Como en C o Perl, PHP requiere que las instruciones terminen en punto y coma al final de cada declaración. La etiqueta de fin de bloque de PHP automáticamente implica un punto y coma. No se tiene que usar punto y comoa para cerrar la última línea de código de PHP. La etiqueta de fin de bloque incluirá de inmediato salto de línea si no está presente.
<?php
    echo 'Esto es una prueba';
?>

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

<?php echo 'Hemos omitido la última etiqueta de cerrado';
Comentario
PHP Soporta comentarios 'C', 'C++' y Unix estilo de consola (estilo Perl). Por ejemplo:
<?php
    
echo 'Esto es una prueba'; // Esto es un comentario estilo c++ de una sola línea
    /* Esto es un comentario multi-línea
       si! otra lína de comentarios */
    
echo 'Esto es otro test';
    echo 
'Un test final'; # Esto es un comentario estilo consola de una sola línea
?>

Los comentarios de estilo "una sola línea" solo comentan hasta el final de la línea o del bloque actual de código PHP, lo primero que suceda. Esto implica que el código HTML después de // ... ?> o # ... ?> Imprimirá ?> para salir del modo PHP y volver a HTML, y // or # no influyen. Si la directiva de configuración asp_tags está activada, actúa igual que // %> y # %>. Sin embargo, la etiqueta </script> no rompe el modo PHP en un comentario de una sola línea.

<h1>Esto es un <?php # echo 'simple';?> ejemplo</h1>
<p>El encabezado anterior dirá 'Esto es un  ejemplo'.</p>


Los comentarios del estilo 'C' finalizan al primer */ que se encuentre. Asegúrese que no utiliza muchos comentarios del estilo 'C'. Es muy fácil cometer errores cuando trata de comentar un gran bloque de código.

<?php
 
/*
    echo 'Esto es una prueba'; /* Este comentario puede causar un problema*/
 
*/
?>


Variables
En PHP las variables se representan con un signo de dólar seguido por el nombre de la variable. El nombre de la variable es sensible a minúsculas y mayúsculas.
Los nombres de variables siguen las mismas reglas que otras etiquetas en PHP. Un nombre de variable válido tiene que empezar con una letra o un carácter de subrayado (underscore), seguido de cualquier número de letras, números y caracteres de subrayado.
<?php
$var 
= 'Roberto';
$Var = 'Juan';
echo 
"$var, $Var";      // imprime "Roberto, Juan"

$4site = 'aun no';      // inválido; comienza con un número
$_4site = 'aun no';     // válido; comienza con un carácter de subrayado
$täyte = 'mansikka';    // válido; 'ä' es ASCII (Extendido) 228
?>

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

Para asignar por referencia, simplemente se antepone un signo ampersand (&) al comienzo de la variable cuyo valor se está asignando (la variable fuente). Por ejemplo, el siguiente segmento de código produce la salida 'Mi nombre es Bob' dos veces:

<?php
$foo 
= 'Bob';                // Asigna el valor 'Bob' a $foo
$bar = &$foo;                // Referenciar $foo vía $bar.
$bar = "Mi nombre es $bar";  // Modifica $bar...
echo $bar;
echo 
$foo;                   // $foo también se modifica.
?>

Variables variables

A veces es conveniente tener nombres de variables variables. Dicho de otro modo, son nombres de variables que se pueden definir y usar dinámicamente. Una variable normal se establece con una sentencia como:
<?php
$a 
= 'hola';
?>
Una variable variable toma el valor de una variable y lo trata como el nombre de una variable. En el ejemplo anterior, hola, se puede usar como el nombre de una variable utilizando dos signos de dólar. Es decir:
<?php
$$a = 'mundo';
?>
En este momento se han definido y almacenado dos variables en el árbol de símbolos de PHP: $a, que contiene "hola", y $hola, que contiene "mundo". Es más, esta sentencia:
<?php
echo "$a ${$a}";
?>
produce el mismo resultado que:
<?php
echo "$a $hola";
?>
esto quiere decir que ambas producen el resultado: hola mundo.
Tipos de Datos

Booleanos

Este es el tipo más simple. Un boolean expresa un valor de verdad. Puede ser TRUE or FALSE.

Para especificar un literal boolean, use alguna de las palabras clave TRUE o FALSE. Ambas son insensibles a mayúsculas y minúsculas.

Enteros

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

Los integers pueden ser especificados mediante notación decimal (base 10), hexadecimal (base 16), u octal (base 8), opcionalmente precedidos por un signo (- o +).

<?php
$a 
= 1234; // número decimal
$a = -123; // un número negativo
$a = 0123; // número octal (equivalente a 83 decimal)
$a = 0x1A; // número hexadecimal (equivalente a 26 decimal)
?>

Números de punto flotante

Los números de punto flotante (también conocidos como "flotantes", "dobles" o "números reales") pueden ser especificados usando cualquiera de las siguientes sintaxis:

<?php
$a 
= 1.234; 
$b = 1.2e3; 
$c = 7E-10;
?>

Cadenas

Un string es una serie de caracteres, y por lo tanto, un carácter es lo mismo que un byte. Es decir, hay exactamente 256 diferentes caracteres posibles. Esto implica también que PHP no tiene soporte nativo para Unicode.

Unidad 1 Curso de PHP

SINTAXIS PARA TRABAJAR EN HTML

El HTML es un lenguaje de marcas que basa su sintaxis en un elemento de base al que llamamos etiqueta. A través de las etiquetas vamos definiendo los elementos del documento, como enlaces, párrafos, imágenes, etc. Así pues, un documento HTML estará constituido por texto y un conjunto de etiquetas para definir la forma con la que se tendrá que presentar el texto y otros elementos en la página.

La etiqueta presenta frecuentemente dos partes:

Una apertura: de forma general <etiqueta>
Un cierre: de tipo
</etiqueta>
Todo lo incluido en el interior de esa etiqueta sufrirá las modificaciones que caracterizan a esta etiqueta. Así por ejemplo:
Las etiquetas <b> y </b> definen un texto en negrita. Si en nuestro documento HTML escribimos una frase con el siguiente código:

<b>Esto esta en negrita</b>


PARTES DE UN DOCUMENTO HTML

Además de todo esto, un documento HTML ha de estar delimitado por la etiqueta <html> y </html>. Dentro de este documento, podemos asimismo distinguir dos partes principales:
El encabezado, delimitado por <head> y </head> donde colocaremos etiquetas de índole informativo como por ejemplo el titulo <title></title> de nuestra página.
El cuerpo, delimitado por las etiquetas <body> y </body>, que será donde colocaremos nuestro texto e imágenes delimitados a su vez por otras etiquetas como las que hemos visto.
El resultado es un documento con la siguiente estructura:
<html>
<head>
Etiquetas y contenidos del encabezado
Datos que no aparecen en nuestra página pero que son importantes para catalogarla: Titulo, palabras clave,...
</head>
<body>
Etiquetas y contenidos del cuerpo
Parte del documento que será mostrada por el navegador: Texto e imágenes
</body>
</html>

Las mayúsculas o minúsculas son indiferentes al escribir etiquetas

A notar que las etiquetas pueden ser escritas con cualquier tipo de combinación de mayúsculas y minúsculas. <html>, <HTML> o <HtMl> son la misma etiqueta. Resulta sin embargo aconsejable acostumbrarse a escribirlas en minúscula ya que otras tecnologías que pueden convivir con nuestro HTML (XML por ejemplo) no son tan permisivas y nunca viene mal coger buenas costumbres desde el principio para evitar fallos triviales en un futuro.


TABLAS EN HTML

Para empezar, nada más sencillo que por el principio: las tablas son definidas por las etiquetas <table> y </table>.

Dentro de estas dos etiquetas colocaremos todas las otras etiquetas, textos e imágenes que darán forma y contenido a la tabla.

Las tablas son descritas por líneas de izquierda a derecha. Cada una de estas líneas es definida por otra etiqueta y su cierre: <tr> y </tr>.

Asimismo, dentro de cada línea, habrá diferentes celdas. Cada una de estas celdas será definida por otro par de etiquetas: <td> y </td>. Dentro de estas etiquetas será donde coloquemos nuestro contenido.

Estructura de una tabla sencilla:

<table>
<tr>
<td>Celda 1, linea 1</td>
<td> Celda 2, linea 1</td>
</tr>
<tr>
<td> Celda 1, linea 2</td>
<td> Celda 2, linea 2</td>
</tr>
</table>
Veamos a continuación algunos atributos útiles para la construcción de nuestras tablas. Empecemos viendo atributos que nos permiten modificar una celda en concreto o toda una línea:
align: Justifica el texto de la celda del mismo modo que si fuese el de un párrafo (center, left, right).
valign: Podemos elegir si queremos que el texto aparezca arriba (top), en el centro (middle) o abajo (bottom) de la celda.
bgcolor: Da colo a la celda o linea elegida.
bordercolor: Define el color del borde.
Otros atributos que pueden ser únicamente asignados a una celda y no al conjunto de celdas de una línea son:

background: Nos permite colocar un fondo para la celda a partir de un enlace a una imagen.
height: Define la altura de la celda en pixels o porcentaje.bgcolor: Da colo a la celda o linea elegida.
width: Define la anchura de la celda en pixels o porcentaje.
colspan: Expande una celda horizontalmente.
rowspan: Expande una celda verticalmente.

Nota: El atributo height no funciona en todos los navegadores, además, su uso no está muy extendido. Las celdas por lo general tienen el alto que necesitan para que quepa todo el contenido que se le haya insertado, es decir, crecen lo suficiente para que quepa lo que hemos colocado dentro.

El atributo width si que funciona en todos los navegadores y lo tendréis que utilizar constantemente. Si le asignamos un ancho a la celda, el ancho será respetado y si dicha celda tiene mucho texto o cualquier otro contenido, la celda crecerá hacia abajo todo lo necesario para que quepa lo que hemos colocado.

Estos últimos cuatro atributos descritos son de gran utilidad. Concretamente, height y width nos ayudan a definir las dimensiones de nuestras celdas de una forma absoluta (en pixels o puntos de pantalla) o de una forma relativa, es decir por porcentajes referidos al tamaño total de la tabla.

Por ejemplo:
<td width="80">
Dará una anchura de 80 pixels a la celda. Sin embargo:

<td width="80%">
Dará una anchura a la celda del 80% de la anchura de la tabla.

Los atributos rowspan y colspan son también utilizados frecuentemente. Gracias a ellos es posible expandir celdas fusionando éstas con sus vecinas. El valor que pueden tomar estas etiquetas es numérico. El número representa la cantidad de celdas fusionadas.
Así,
<td colspan="2">
Fusionara la celda en cuestión con su vecina derecha.

Esta celda tiene un colspan="2"
Celda normal
Otra celda

Del mismo modo,
<td rowspan="2">
Esta celda tiene rowspan="2", por eso tiene fusionada la celda de abajo.
Celda Normal
Otra celda normal

Expandirá la celda hacia abajo fusionándose con la celda inferior.