miércoles, 6 de junio de 2012

PROGRAMACIÓN PHP


PROGRAMACIÓN PHP:

      PHP es un lenguaje de código abierto muy popular, adecuado para desarrollo web y que puede ser incrustado en HTML. Es popular porque un gran número de páginas y portales web están creadas con PHP. Código abierto significa que es de uso libre y gratuito para todos los programadores que quieran usarlo. Incrustado en HTML significa que en un mismo archivo vamos a poder combinar código PHP con código HTML, siguiendo unas reglas.

     PHP se utiliza para generar páginas web dinámicas. Recordar que llamamos página estática a aquella cuyos contenidos permanecen siempre igual, mientras que llamamos páginas dinámicas a aquellas cuyo contenido no es el mismo siempre. Por ejemplo, los contenidos pueden cambiar en base a los cambios que haya en una base de datos, de búsquedas o aportaciones de los usuarios, etc.
 ¿Cómo trabaja PHP? El lenguaje PHP se procesa en servidores, que son potentes ordenadores con un software y hardware especial. Cuando se escribe una dirección tipo http://www.aprenderaprogramar.com/index.php en un navegador web como Internet Explorer, Firefox o Chrome, ¿qué ocurre? Se envían los datos de la solicitud al servidor que los procesa, reúne los datos (por eso decimos que es un proceso dinámico) y el servidor lo que devuelve es una página HTML como si fuera estática.

  El esquema es:
 
       Petición de página web al servidor --> El servidor recibe la petición, reúne la información necesaria consultando a bases de datos o a otras páginas webs, otros servidores, etc --> El servidor responde enviando una página web “normal” (estática) pero cuya creación ha sido dinámica (realizando procesos de modo que la página web devuelta no siempre es igual).

       Resumen:

Páginas estáticas: Petición --> Respuesta
Páginas dinámicas: Petición --> Procesado y preparación --> Respuesta

  Por regla general este tipo de lenguaje suele ser utilizado para crear contenido dinámico y poder interactuar con el usuario.

Lo mejor de usar PHP es que es extremadamente simple para el principiante, pero a su vez, ofrece muchas características avanzadas para los programadores profesionales y más avanzados.

  Con PHP puedes procesar la información de formularios, generar páginas con contenidos dinámicos, o enviar y recibir cookies, entre muchas más cosas. PHP lo utilizan desde pequeñas páginas web hasta grandes empresas. Muchas aplicaciones web están construidas usando PHP. Podemos citar Joomla y Drupal (gestores de contenido de páginas web), osCommerce (tiendas on-line para comercio electrónico), phpBB y SMF (sistemas de foros para páginas web), Moodle (plataforma educativa para educación on-line), etc.
 
          Arreglos en PHP:
         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 llamadas 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. (Más 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 :
       Almacenar los nombres de los días de la semana en un vector y luego imprimirlos uno debajo de otro.
<Html>
<Title> Ejemplo   </Title>
<Body>
<?PHP
  // Inicialización 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";
  // Impresion del vector
  for($i=0; $i<7; $i++)
   {
    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.
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.
 Ejemplo: 
                        Almacenar en un vector los datos personales de un empleado y luego mostrarlos en pantalla.
<Html>
<Title>  Ejemplo  </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";
  // 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>

     Existen varias maneras de inicializar vectores en PHP. A continuación se describen algunos ejemplos.

    Pais[] = "Argentina";
    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:

     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á");
     
    Además, los índices, pueden no ser obligatoriamente consecutivos, ni tampoco comenzar de cero, ni tampoco ser un número. 
Vectores con índice de Texto
    
     Un vector en PHP, no solamente debe contener índice numérico, sino también, puede ser una letra o un texto.
Ejemplo : 
     
      Cargar en un vector algunas ciudades del mundo, de manera que el índice del vector contenga los tres primeros caracteres de la ciudad almacenada.
<Html>
<Title>  Ejemplo.php  </Title>
<Body>
<?Php
  // Inicializacion del Vector
  $Ciudad = array("Par" => "Paris",
                            "Lon" => "Londres",
                            "Ate" => "Atenas",
                            "Ber" => "Berlin",
                            "Lim" => "Lima");
  echo "<H2>"."Vector de Ciudades";
  echo "<H3>"."<Hr>";
  while (list($i,$Valor)=each($Ciudad))
   {
     echo "Posición: " . $i . " - ";
     echo "Contenido: " . $Valor;
     echo "<Br>";
    }
 ?>
</Body>
</Html>
La salida obtenida es:
   





Variables PHP:
     El ámbito de una variable es el contexto dentro del que la variable está definida. La mayor parte de las variables PHP sólo tienen un ámbito simple. Este ámbito simple también abarca los ficheros incluídos y los requeridos. Por ejemplo:

<?php
$a = 1;
include 'b.inc';
?>

     Aquí, la variable $a estará disponible al interior del script incluido b.inc. Sin embargo, al interior de las funciones definidas por el usuario se introduce un ámbito local a la función. Cualquier variable usada dentro de una función está, por omisión, limitada al ámbito local de la función. Por ejemplo:

<?php
$a = 1; /* ámbito global */

function test()
{
    echo $a; /* referencia a una variable del ámbito local */
}

test();
?>

       Este script no producirá salida, ya que la sentencia echo utiliza una versión local de la variable $a, a la que no se ha asignado ningún valor en su ámbito. Puede que usted note que hay una pequeña diferencia con el lenguaje C, en el que las variables globales están disponibles automáticamente dentro de la función a menos que sean expresamente sobre escritas por una definición local. Esto puede causar algunos problemas, ya que la gente puede cambiar variables globales inadvertidamente. En PHP, las variables globales deben ser declaradas globales dentro de la función si van a ser utilizadas dentro de dicha función.
La palabra clave global

En primer lugar, un ejemplo de uso de global:

<?php
$a = 1;
$b = 2;
function Suma()
{
    global $a, $b;

    $b = $a + $b;
}

Suma();
echo $b;
?>

       El script anterior producirá la salida "3". Al declarar $a y $b globales dentro de la función, todas las referencias a tales variables se referirán a la versión global. No hay límite al número de variables globales que se pueden manipular dentro de una función.
Un segundo método para acceder a las variables desde un ámbito global es usando el array $GLOBALS. 

El ejemplo anterior se puede reescribir así:

<?php
$a = 1;
$b = 2;

function Suma()
{
    $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
}

Suma();
echo $b;
?>

       El array $GLOBALS es un array asociativo con el nombre de la variable global como clave y los contenidos de dicha variable como el valor del elemento del array. 

Uso de variables estáticas

       Una variable estática existe sólo en el ámbito local de la función, pero no pierde su valor cuando la ejecución del programa abandona este ámbito. Consideremos el siguiente ejemplo:

<?php
function test()
{
    $a = 0;
    echo $a;
    $a++;
}
?>

       Esta función tiene poca utilidad ya que cada vez que es llamada asigna a $a el valor 0 e imprime un "0". La sentencia $a++, que incrementa la variable, no sirve para nada, ya que en cuanto la función finaliza, la variable$a desaparece. Para hacer una función útil para contar, que no pierda la pista del valor actual del conteo, la variable $a debe declararse como estática:

<?php
function test()
{
    static $a = 0;
    echo $a;
    $a++;
}
?>

       Ahora, $a se inicializa únicamente en la primera llamada a la función, y cada vez que la función test() es llamada, imprimirá el valor de $a y lo incrementa.
Las variables estáticas también proporcionan una forma de manejar funciones recursivas. Una función recursiva es la que se llama a sí misma. Se debe tener cuidado al escribir una función recursiva, ya que puede ocurrir que se llame a sí misma indefinidamente. Hay que asegurarse de implementar una forma adecuada de terminar la recursión. La siguiente función cuenta recursivamente hasta 10, usando la variable estática $count para saber cuándo parar:

<?php
function test()
{
    static $count = 0;

    $count++;
    echo $count;
    if ($count < 10) {
        test();
    }
    $count--;
}
?>
Nota:
       
       Las variables estáticas pueden ser declaradas como se ha visto en los ejemplos anteriores. Al tratar de asignar valores a estas variables que sean el resultado de expresiones, causará un error de análisis sintáctico.

Ejemplo: Declaración de variables estáticas

<?php
function foo(){
    static $int = 0;          // correcto
    static $int = 1+2;        // incorrecto  (ya que es una expresión)
    static $int = sqrt(121);  // incorrecto  (es una expresión también)

    $int++;
    echo $int;
}
?>

Nota: Las declaraciones estáticas son resueltas en tiempo de compilación.

Nota: Utilizar una clave global fuera de una función no es un error. Esta pueda ser utilizada aún si el fichero está incluido en el interior de una función.

Funciones:
  La función podría ser definida como un conjunto de instrucciones que explotan ciertas variables para realizar una tarea más o menos elemental.

    PHP basa su eficacia principalmente en este tipo de elemento. Una gran librería que crece constantemente, a medida que nuevas versiones van surgiendo, es complementada con las funciones de propia cosecha dando como resultado un sinfín de recursos que son aplicados por una simple llamada.

        Las funciones integradas en PHP son muy fáciles de utilizar. Tan sólo hemos de realizar la llamada de la forma apropiada y especificar los parámetros y/o variables necesarios para que la función realice su tarea.

      Lo que puede parecer ligeramente más complicado, pero que resulta sin lugar a dudas muy práctico, es crear nuestras propias funciones. De una forma general, podríamos crear nuestras propias funciones para conectarnos a una base de datos o crear los encabezados o etiquetas meta de un documento HTML. En definitiva, es interesante crear funciones para la mayoría de acciones más o menos sistemáticas que realizamos en nuestros programas.

       Aquí daremos el ejemplo de creación de una función que, llamada al comienzo de nuestro script, nos crea el encabezado de nuestro documento HTML y coloca el titulo que queremos a la página:

<?
function hacer_encabezado($titulo)
{
$encabezado="<html><head>t<title>$titulo</title></head>";
echo $encabezado;
}
?>

       Esta función podría ser llamada al principio de todas nuestras páginas de la siguiente forma:
$titulo="Mi web";
hacer_encabezado($titulo);

      De esta forma automatizamos el proceso de creación de nuestro documento. Podríamos por ejemplo incluir en la función otras variables que nos ayudasen a construir las etiquetas meta y de esta forma, con un esfuerzo mínimo, crearíamos los encabezados personalizados para cada una de nuestras páginas. De este mismo modo nos es posible crear cierres de documento o formatos diversos para nuestros textos como si se tratase de hojas de estilo que tendrían la ventaja de ser reconocidas por todos los navegadores.

       Por supuesto, la función ha de ser definida dentro del script ya que no se encuentra integrada en PHP sino que la hemos creado nosotros. Esto en realidad no pone ninguna pega ya que puede ser incluida desde un archivo en el que iremos almacenando las definiciones de las funciones que vayamos creando o recopilando.

       Estos archivos en los que se guardan las funciones se llaman librerías. La forma de incluirlos en nuestro script es a partir de la instrucción require o include:
require("libreria.php") o include("libreria.php")

   En resumen,  quedaría así:

   Tendríamos un archivo libreria.php como sigue

<?
//función de encabezado y colocación del titulo
function hacer_encabezado($titulo)
{
$encabezado="<html>n<head>nt<title>$titulo</title>n</head>n";
echo $encabezado;
}
?>

    Por otra parte tendríamos nuestro script principal página.php:
<?
include("libreria.php");
$titulo="Mi Web";
hacer_encabezado($titulo);
?>
<body>
El cuerpo de la página
</body>
</html>

       También puede resultar muy práctico el utilizar una nomenclatura sistemática a la hora de nombrarlas: Las funciones comerciales podrían ser llamadas com_loquesea, las de bases de datos bd_loquesea, las de tratamiento de archivos file_loquesea. Esto nos permitirá reconocerlas enseguida cuando leamos el script sin tener que recurrir a nuestra oxidada memoria para descubrir su utilidad.

Estructura de control en PHP:

       PHP es un lenguaje basado en Perl, con una sintaxis muy parecida a la de C/C++ o Java. Una de las partes importantes de cualquier lenguaje son las estructuras de control. A continuación, se muestra un ejemplo de cada una de las estructuras de control que se manejan en PHP.
# PHP: If 

if ($a == $b) {
    Instrucciones
} elseif ($a > $b) {
    Instrucciones
} else ($a < $b) {
    Instrucciones
}
# PHP: Operador ternario (aplicación especial del If)
$a = ($b > 10) ? true : false;

# PHP: Switch
switch ($var1) {
case 0:
    Instrucciones
    break;
case 1:
    Instrucciones
    break;
default:
    Instrucciones
    break;
}
       El operador ternario es utilizado como un método abreviado de asignación de variables, en donde se debe comparar un valor para determinar el valor que tomará una variable. Este está dividido por la expresión a evaluar, el signo de interrogación (?), el valor que tomará de ser verdadera la expresión, dos puntos (:) y el valor si la expresión es falsa.
# PHP: For

for ($i = 0; $i < 10; $i++) {
    Instrucciones
}
# PHP: While
while ($var1 != false) {
    Instrucciones
}
# PHP: Do..While
do {
    Instrucciones
} while ($var2 === true);

      La estructura de control Do..While tiene la funcionabilidad de que el ciclo se realice por lo menos una vez, y después evaluar la expresión de salida. Tiene la misma funcionabilidad que la sentencia Repeat, en lenguaje Pascal.

      Ahora, existe una cuarta estructura de bucles llamada Foreach, que en PHP, nos sirve para recorrer mucho más facilmente los elementos de un arreglo. La sintaxis, indica que las filas o registros se van recorriendo de uno en uno, y el valor de cada uno, se almacena en una variable.

# PHP: Foreach
foreach ($foo as $bar) {
    echo $bar . "<br />";
}
      
      En el ejemplo, la variable $foo es el arreglo y $bar, la variable que recibe el valor de cada una de las filas recorridas.

No hay comentarios:

Publicar un comentario