jueves, 8 de septiembre de 2016

Unidad 4 Curso PHP

Ejercicio usando funciones:

1. Crear una librería de funciones propias en un documento cuyo nombre será librería.php. Incluir dicha librería por medio del uso de las funciones: include o require.

Debe tener conocimiento del uso adecuado de:

include()
require()
include_once()
require_once()

2. Dentro de la libreria.php crear una función que sea capaz de recibir dos cadenas, y devolver un true si las dos cadenas son capicuas o un false si no lo son, ademas debe tambien devolver una cadena resultado de la concatenación de las dos recibidas.

Debe tener conocimiento del uso adecuado de:

Paso de parámetros por copia o referencia (usando &)
Puede utilizar la funcion:

string strrev (string cadena) //Devuelve cadena invertida

Aunque se recomienda realizar esta función recorriendo las cadenas con el uso de estructuras de control como: for(), while(), do while().

3. Dentro de librería.php crear una función que sea capaz de recibir cualquier cantidad de variables numéricas, sumarlas y devolver el resultado de la suma.

Debe tener conocimiento del uso adecuado de:

Paso de parámetros variables:

int func_num_args (void );

int func_get_arg (int arg_num);

int func_get_args (void );


Formularios

El siguiente fragmento HTML de ejemplo define un formulario simple que permite al usuario introducir su nombre, apellido, dirección de correo electrónico y sexo. Cuando se active el botón de envío, el formulario será enviado al programa especificado por el atributo: action.
<FORM action="mostrar.php" method="post">
    Nombre: <INPUT type="text" name="nombre"><BR>
    Apellido: <INPUT type="text" name="apellido"><BR>
    email: <INPUT type="text" name="email"><BR>
    <INPUT type="radio" name="sexo" value="Varón"> Varón<BR>
    <INPUT type="radio" name="sexo" value="Mujer"> Mujer<BR>
    <INPUT type="submit" name=”enviar” value="Enviar"> <INPUT type="reset">
  </FORM>
 
Recibir variables desde un formulario
 
 
Una vez que se hace clic en el boton Enviar. Se pasan al script mostrar.php la variable del tipo arreglo asociativo $_POST, la cual hara referencia a:
 
$_POST[‘nombre’]
$_POST[‘apellido’]
$_POST[‘email’]
$_POST[‘sexo’]
$_POST[‘enviar’]
 
Si desea puede mostrar el contenido del arreglo $_POST usando: print_r($_POST);
 
Para utilizar el metodo GET solo debe sustituir el method del formulario por GET (escrito en minusculas o mayusculas). Utilizar luego el arreglo asociativo $_GET de la misma forma que $_POST.


Algunos elementos interesantes de los formulario:

Uso de la etiqueta para ROTULOS:

<FORM action="..." method="post">
<TABLE>
  <TR>
    <TD><LABEL for="nombre">Nombre</LABEL>
    <TD><INPUT type="text" name="nombre" id="nombre">
  <TR>
    <TD><LABEL for="apellido">Apellido</LABEL>
    <TD><INPUT type="text" name="apellido" id="apellido">
</TABLE>
</FORM>

Usos de SELECT multiples y agrupados:

SELECT MULTIPLES

<SELECT multiple size="4" name="elegir-componente">
      <OPTION selected value="Componente_1_a">Componente_1</OPTION>
      <OPTION selected value="Componente_1_b">Componente_2</OPTION>
      <OPTION>Componente_3</OPTION>
      <OPTION>Componente_4</OPTION>
      <OPTION>Componente_5</OPTION>
      <OPTION>Componente_6</OPTION>
      <OPTION>Componente_7</OPTION>
 </SELECT>
SELECT AGRUPADOS

<SELECT name="ComOS">
     <OPTION selected label="ninguno" value="ninguno">Ninguno</OPTION>
     <OPTGROUP label="PortMaster 3">
       <OPTION label="3.7.1" value="pm3_3.7.1">PortMaster 3 con ComOS 3.7.1</OPTION>
       <OPTION label="3.7" value="pm3_3.7">PortMaster 3 con ComOS 3.7</OPTION>
       <OPTION label="3.5" value="pm3_3.5">PortMaster 3 con ComOS 3.5</OPTION>
     </OPTGROUP>
     <OPTGROUP label="PortMaster 2">
       <OPTION label="3.7" value="pm2_3.7">PortMaster 2 con ComOS 3.7</OPTION>
       <OPTION label="3.5" value="pm2_3.5">PortMaster 2 con ComOS 3.5</OPTION>
     </OPTGROUP>
     <OPTGROUP label="IRX">
       <OPTION label="3.7R" value="IRX_3.7R">IRX con ComOS 3.7R</OPTION>
       <OPTION label="3.5R" value="IRX_3.5R">IRX con ComOS 3.5R</OPTION>
     </OPTGROUP>
 </SELECT>

AREAS DE TEXTO

Este ejemplo crea un control TEXTAREA de 20 filas por 80 columnas que contiene inicialmente dos líneas de texto.

<TEXTAREA name="eltexto" rows="20" cols="80">
   Primera línea del texto inicial.
   Segunda línea del texto inicial.
</TEXTAREA>

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.