Curso de PHP

De Wikiversidad
Saltar a: navegación, buscar

PHP es un lenguaje de programación interpretado, diseñado originalmente para la creación de páginas web dinámicas. Nace en 1995 y actualmente se encuentra en su versión 5. A diferencia de HTML, que es un lenguaje de etiquetas para describir documentos estáticos, PHP es un lenguaje que se interpreta en el servidor para generar páginas de forma dinámica. Lo que esto quiere decir es que los scripts (códigos) que nosotros creemos no estarán usando nuestro ordenador para ser ejecutados, sino en el ordenador en el que están alojados (hosting) y no dependen en nada del ordenador o navegador que estemos usando. Los códigos de PHP son ejecutados por el motor PHP instalado en el servidor y se devuelve al navegador del usuario el resultado, ya sea una web entera o un simple párrafo.

Recomendaciones para seguir el curso[editar]

  • Saber HTML

Para entender el curso de aprendizaje de PHP, es necesario tener los fundamentos básicos del lenguaje HTML. Para aprenderlo pulsa aquí

  • Editor PHP

Aunque en cualquier editor de texto puedes crear o editar programas en PHP es mas cómodo un editor especializado para este tipo de edición. Un excelente IDE es Geany debido a su velocidad, precio (gratuito), y ser multiplataforma.

  • Servidor, interprete y base de datos (opcional)

Cuando te encuentres aprendiendo algún lenguaje como este, realiza tus pruebas, ejemplos y prácticas fuera de la red para evitar difundir información importante de tu servidor. Por lo tanto es muy recomendable instalar en vuestro propio ordenador algún servidor como Apache, un Intérprete PHP (que ejecuta tus programas PHP) y un gestor de bases de datos (aunque no es necesario, pero esta es una de las ventajas poderosas de PHP, manipular bases de datos), como MySQL, que te permitirán probar tus programas incrustados en las páginas webs de tu ordenador.

Existe un instalador que te instala los 3 componentes a la vez y que a mi, 
personalmente, es el que más me agrada, es el AppServ, podéis encontrarlo en 
http://www.appservnetwork.com . 
* C:\Appserv\www\ < Aquí colocas tus archivos de prueba.
* http://localhost/archivo.php < Esta es tu URL local, para probar fuera de red.

Como insertar PHP en páginas HTML[editar]

Antes de todo, el formato del archivo no debe ser *.html, sino *.php. Esto sirve para que el servidor sepa por el formato que el archivo está usando ese tipo de lenguaje y pueda ejecutarlo con éxito. Una vez estemos editando el archivo *.php, no podemos insertar el código ahí sin más, debemos abrir las etiquetas adecuadas.

         Etiquetas para código php: <?php CÓDIGO ?>
         Etiquetas para código php abreviadas: <? CÓDIGO ?> (estas etiquetas por convencción quedaron depreacadas o en deshuso)

Si no ponemos las etiquetas el servidor creerá que ese código es HTML y no PHP, y eso solo puede ocasionarnos una cosa: problemas. Si añadimos las etiquetas de PHP a las HTML el código nada más empezar deberia ser así:

<html>
<head>
</head>
<body>
<?php 
--CODIGO PHP--
?> 
</body> 
</html>

Nota: La sintaxis <? CODIGO ?> es obsoleta, por lo que se recomienda encarecidamente utilizar únicamente <?php CODIGO ?> La inserción de variables de PHP dentro de un código HTML será válido cuando la directiva "short_open_tag" esté a "on" en nuestro php.ini (es normal encontrarla así en casi cualquier sitio). En caso de que no estuviera tendríamos que poner <?php para abrir el tag, y <?=$variable?> ya no funcionaría por lo tanto tendrias que reemplazarlo por <?php echo $variable;?>

Comentarios en PHP[editar]

Lo primero que voy a explicar es como poner comentarios. Hay varios tipos de comentarios en php. Para el que no lo sepa, un comentario es una o varias líneas de código que no son interpretadas. ¿Y para qué sirven si no son interpretadas? Pues para recordar al programador por qué las puso ahí. Normalmente, las webs no las hace un solo programador, sino varios, ya que ahorra mucho tiempo, y los comentarios son la forma de hacer que el otro programador sepa la razón de cada código que hemos usado.
Hay varias formas bastante básicas de poner comentarios, que son las siguientes:
Comentario de una línea: //
Este tipo de comentario solo hace efecto a una línea, y si hacemos un salto de línea dejará de tener efecto. Para entenderlo mejor, veamos un ejemplo:

<?php 
//El código1 ha sido puesto porque hace X función. 
CÓDIGO1 
CÓDIGO2 
CÓDIGO3 
?>

De esta forma el comentario no hace efecto a las líneas de los códigos.

Comentario de una línea: #
Este tipo de comentario es exactamente igual al anterior, solo que en vez de // se pone #.

Comentario de varias líneas: /* */
Este tipo de comentario se usa cuando lo que quieres comentar es más extenso que una línea. En vez de poner // o # en cada cambio de línea, se haría esto:

<?php 
/* El código1 se pone porque realiza X función 
y recoge información para el código2. */ 
CÓDIGO1 
CÓDIGO2 
CÓDIGO3 
?>

De esta forma el comentario solo haría efecto hasta */, sin afectar al código.

Hola Mundo[editar]

Aquí vamos a aprender otra función, la más básica, la que sirve para mostrar texto en pantalla. La función se usaría así:

<?php
//Se usa la función echo y se pone entre comillas el texto a mostrar
echo "Hola Mundo!";
?>

Como habréis visto, no pongo las etiquetas de HTML(body, head, etc.) porque no es obligatorio a no ser que vayamos a usar código javascript o similares. También debeis fijaros en que después de cada función se ha de poner « ; » (sin comillas). Esto es para indicar que la función acaba.
Hay dos formas de usar el echo, con comillas dobles (") o con comillas simples ('). La diferencia se nota cuando usamos variables, cosa que veremos más adelante.

En el echo podemos usar códigos para modificar el estilo del texto, pero no los voy a explicar porque ya los deberíais saber si tenéis fundamentos básicos de HTML, así que si no os acordáis, volved y miraros el curso de HTML. Lo que sí que voy a decir es la forma de usarlos:

<?php
echo "<font color='red'>Hola</font> <font color='green'>mundo</font>.";
?>


Otra cosa en que debéis fijaros, cuando las comillas se abren dobles, siempre hay que poner dentro las comillas simples, sino el servidor creerá que ahí cerramos el echo y daría errores. Si usásemos las comillas simples para el echo pues todas las comillas de dentro deberían ser dobles, nada complicado de entender. También si las comillas son dobles podríamos poner \" en vez de comillas simples, pero no es necesario.

Otra cosa a tener en cuenta es que php no tiene en cuenta los saltos de línea si no se los indicas. Lo que quiere decir que si escribimos:

<?php
echo "Hola ";
echo "usuario";
?>

Nos mostrará: Hola usuario. Para marcar el salto de línea hay que poner <br />.

<?php
echo "Hola usuario.<br />";
echo "Adios usuario.";
?>

Variables[editar]

Las variables es algo sencillo de comprender si es bien explicado. Imaginemos un armario con muchos cajones. En cada cajón podemos almacenar números, series de palabras o códigos. Se les llama variables porque podemos cambiar lo que almacenamos en ese cajón en cualquier momento. Una variable es un espacio físico en memoria RAM separado para almacenar nuestros datos. Ahora vamos a ver como se establece una variable:

<?php
$frase = "Hola";
$numero = 7;
echo "Un gato que ves por la calle te dice: $frase<br />";
echo 'El número que va después del 6 es el: '.$numero.' ';
?>

Esto mostraría:
Un gato que ves por la calle te dice: Hola
El número que va después del 6 es el: 7

Puede que no os hayáis fijado pero he usado diferentes formas con las comillas y a la hora de crear variables, ahora procedo a explicarlas:
·Cuando vamos a crear una variable que tiene una cadena de palabras, hemos de poner comillas antes y después de la cadena: $frase = "Hola";
·Cuando vamos a crear una variable que contiene una cadena numérica, no hay que poner las comillas, ya que sino tratará la variable como una cadena de palabras: $número = 7; La diferencia de porqué hemos de poner las variables y porqué no las veremos más adelante.

Las diferentes formas para mostrar las variables son estas:
·Se puede mostrar una variable cuando el ECHO(mostrar cosas en pantalla) está con comillas dobles simplemente poniendo la variable de forma normal, es decir: echo"$variable";
·Si el echo está con comillas simples (' ') se ha de hacer algo más complejo: echo'La variable se pondría así: '.$variable.; Esto sirve para no confundir al echo.
Cuando ponemos comandos HTML dentro de un echo (todos deben ir dentro), tenemos que usar las comillas opuestas a las que hemos usado en el echo, esto quiere decir que:
·Si hemos hecho el echo(que cosas) con comillas simples, las comillas de dentro que usemos serán siempre dobles, y las variables se pondran entre '. y .'
·Si hemos usado comillas dobles, las comillas de dentro que usemos serán simples y las variables irán sin comillas: echo"Hola $nombre";

Sentencias de control[editar]

Selección Simple[editar]

Sentencia IF:

La sentencia if realiza un bloque de código siempre que la condición de este se cumpla, ejemplo:

 if($a==3){
  echo "hola";
 }

El resultado se veria si $a efectivamente es igual a 3.

(Es muy importante saber utilizar la sintaxis de comparación como "==" que sirve para realizar una comparación en la que un valor tiene que ser igual a otro)

Selección Múltiple[editar]

Selecciones anidadas[editar]

Sentencia IF anidada:

La sentencia if anidada, al igual que la sentencia if, realiza un bloque de código siempre que las condiciones de las sentencias se cumplan, ejemplo:

 if($a==3){
  echo "se ejecuto la primera sentencia if";
  if($b==4){
   echo "se ejecuto la segunda sentencia if";
  }
 }

El primer echo se ejecuta si $a efectivamente es igual a 3 y la segunda sentencia if también se ejecutaria si $b efectivamente es igual a 4.

Estructura de Selección múltiple (switch)[editar]

La estructura de control "switch", trabaja exactamente igual a su equivalente en ASP "select case".

 switch ($i) {
     case 0:
         print "i es igual a 0";
     case 1:
         print "i es igual a 1";
     case 2:
         print "i es igual a 2";
 }

Bucle while[editar]

El bucle while realiza un bloque de código mientras se cumpla la condición condición, y sólo mientras se cumpla, a diferencia del do (condición) while. Ejemplo:

 $i = 0;
 while ($i < 3) {
  echo "Hola <nowiki><br /></nowiki>";
  $i++;
 }

para lo que el resultado será:

Hola
Hola
Hola

Los bucles while se utilizan a menudo realizando cambios en la variable de condición a fin de extender o recortar el bucle, para ello encontramos sentencias de salida como break; Ejemplo:

 while ($i) { // MIENTRAS $i == TRUE
  if ($seleccionDeUsuaurio) $i = false;
 }

Bucle do...while[editar]

El bucle do...while trabaja en forma similar al bucle while, excepto que la condición se evalua al final de cada iteración en vez de al principio.

Su sintaxis:

  do{
    código
  }while(condición);

Donde:

   código, es un bloque de código php
   condición, es una expresión a ser evaluada

Ejemplo:

  <?php
  $i = 0;
  do{
      echo 'Hola mundo';
  }while($i > 0);
  /* 
  En el ejemplo, primero se imprime ''Hola mundo'' y luego se evalúa si ''$i es mayor que 0''. Como
  $i es igual a 0, la condición es falsa por lo tanto sale del bucle y continúa con el resto del
  script.
  La salida de este bloque sería:
    Hola mundo 
  */
  ?>

La estructura do...while, primero realiza el bloque de código y luego, antes de la siguiente iteración, se comprueba la condición. Si esta es verdadera se repite el bloque de código, sino, sale del bucle do...while.

Bucle for[editar]

La sintaxis del bucle FOR es la siguiente:

 for(expr1; expr2; expr3) sentencia;

Dónde: expr1, Se ejecuta una sola vez al principio de la ejecución del bucle FOR expr2, Al comienzo de cada iteración se evalúa la esta expresión. Si es verdadera, se ejecuta el bloque sentencia, si es falsa, la ejecución del bucle finaliza. expr3, Al final de cada iteración, se ejecuta expr3.

Ejemplo:

  <?php
  for($i = 1; $i < 5; $i++) echo $i;
  /* La salida de este ejemplo sería:
     1234
  */
  ?>

En caso de que el bloque sentencia requiera más de una línea, deberá utilizarse llaves de apertura y cierre ('{' y '}') conteniendo el bloque de código.

Ejemplo:

  <?php
  for($i = 1; $i < 5; $i++ ){
     if($i < 3){
       echo $i;
     }else{
       echo '-';
     }
  }
  /* La salida de este ejemplo sería:
     12--
  */
  ?>

Bucle foreach[editar]

Se aplican dos sintaxis a este bucle:

Cuando hay un vector con sólo valores:

  foreach($vector as $elemento)
  {
    // ...
  }

Donde $vector es el vector que hay que explorar y $elemento es la variable donde se pasará el valor de cada elemento del vector que se está explorando.

Y cuando hay un vector que tiene tanto clave como valor:

  foreach($vector as $clave => $valor)
  {
    // ...
  }

Donde $clave en este caso sería la clave con la que se identifica un elemento, y $valor el valor del elemento en sí.


Ejemplo 1:
foreach con un arreglo de sólo valores:

  <?php
  // Definimos un arreglo con sólo valores que contenga los días laborales de la semana.
  $dias = array('Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes');
  // Y ahora los mostramos:
  foreach($dias as $dia)
  {
    echo $dia;
  }
  /*
  La salida sería:
    Lunes
    Martes
    Miércoles
    Jueves
    Viernes
  */
  ?>

Ejemplo 2:
foreach con arreglo que tiene tanto clave como valor:

  <?php
  // Definimos un arreglo que tenga como clave un día de la semana, y como valor unn tipo de comida:
  $comidas = array('Lunes' => 'langosta',
                   'Martes' => 'espaguettis',
                   'Miércoles' => 'arroz chino',
                   'Jueves' => 'mariscos',
                   'Viernes' => 'comida chatarra');
  // Y ahora los mostramos:
  foreach($comidas as $dia => $comida)
  {
    echo "El $dia comeré $comida";
  }
  /*
  La salida sería:
    El Lunes comeré langosta
    El Martes comeré espaguettis
    El Miércoles comeré arroz chino
    El Jueves comeré mariscos
    El Viernes comeré comida chatarra

  Útil si alguien te cocina, o si tienes mala memoria y no te acuerdas qué es lo que vas a comer en tal día xD.
  */
  ?>

Vectores , Arreglos o Arrays[editar]

Los vectores en PHP son una agrupación de variables las cuales, es una variable que almacena una lista de elementos identificables por un índice, al no disponer de tipo pueden variar desde valores vacíos a estructuras complejas, pasando por todo tipo de variables.
Los vectores pueden ser definidos de múltiples formas, la forma mas sencilla seria la siguiente:

    $vector = array(1, 2);

Esta forma es la forma mas elemental de creación de vectores, creando un vector de dos elementos [1,2]
La estructura vista anteriormente no es estática, es decir podemos seguir trabajando con dicho vector, al cual podremos añadir elementos, o realizar múltiples funciones sobre ellos.

Php permite crear arrays en forma asociativa por ejemplo:

    $vector['perro_chico'] = 'caniche';
    $vector['perro_grande'] = 'gran danes';

Podemos referinos al primer elemento de dos formas o con el índice número en el orden en que se agregaron los elementos o por el índice de texto por ej:

    echo $vector['perro_chico'].'<br />';
    echo $vector[0].'<br />';
?>

Retornaria el mismo resultado:

caniche
caniche

Para obtener la cantidad de elementos de un array se utiliza:

    echo count($vector);
?>

Esto nos daria como resultado: 2


Para insertar elementos en un Array tenemos dos maneras:

    $vector[] = 3;
    $vector[2] = 3;

En la primera de ellas estaríamos apilando un nuevo valor en la posición siguiente del Array y en la segunda forma, asignamos a la posición 2 de Array el valor 3. En php la numeración de los vectores empieza desde 0, por eso la tercera posición es la posición 2. En ambos casos, tenemos el siguiente resultado.
vector = [1,2,3]
También podremos insertar o extraer elementos de un Array utilizando las funciones:

    $elem = array_pop($vector)  //para extraer el ultimo elemento del Array
    array_push($vector, "4") // para insertar un elemento en la ultima posición

Vectores multidimensionales[editar]

Como ya dijimos antes, los Array en PHP no distingen tipos de datos, lo cual mucho mas allá de ser un inconveniente es una gran ventaja, puesto que permite montar grandes estructuras complejas. Entre estas estructuras podemos distinguir los vectores multidimensionales, también conocidos como matrices, y su sintaxis seria la siguiente:

    $vector=array(array(1, 2), array(3, 4, 5), array(6, 7))
    /*
    vector:[1, 2   ]
           [3, 4, 5]
           [6, 7   ]
    */

Como podemos ver, la matriz no es completa, es decir todas las filas no tienen los mismos elementos, esta ventaja me permite tratar de forma independiente cada una de las filas, sin tener en cuenta a las otras. Al igual que en los vectores unidimensionales podremos añadir nuevos elementos de la siguiente forma:

    $vector[] = array(2, 7, 9, 1)
    /*
    vector:[1, 2      ]
           [3, 4, 5   ]
           [6, 7      ]
           [2, 7, 9, 1]
    */

Funciones[editar]

PHP cuenta con una multitud de funciones increíble, que se pueden ver en http://www.php.net, las funciones son por decirlo porciones de código que sirven para hacer determiandas tareas repetitivas de manera rápida, esto queda mas claro con un ejemplo

Sintaxis:

function nombre (<parametro>){
      ...
      return <valor>;
}
function sumar($num1,$num2){
	$num3 = $num1+$num2;
	return $num3;
}
$n1=2;
$n2=3;
$resultado = sumar($n1,$n2);
echo $resultado;
/* devuelve el 3 que se cargo a la variable resultado */

Esto es algo muy sencillo pero la cosa podría complicarse mucho, lo que hicimos fue una función llamada sumar, que recibía 2 números y los sumaba, y luego la llamamos con sumar(dato1,dato2), como estas funciones en php.net existen cientos que ya vienen incluidad en php y solo hay que llamar, algunas necesarias de aprender como por ejemplo:

Inclusiones de Código desde Fichero: Include()[editar]

Esta función es muy útil y existe en casi todos los lenguajes de programación. Imaginemos que tenemos varios achivos de una página como: cabecera.php, cuerpo.php, pie.php (o footer), cada uno de estos con códigos distintos, sucede muchas veces que necesitamos que todas las páginas tengan la misma cabecera pero distinto footer, entonces para ayudarme lógicamente y "incluir" el código php de la cabecera en el archivo:

include("cabecera.php");
echo "hola";

esto añadira la cabecera al archivo y luego escribira hola, para mas información http://cl.php.net/function.include

Esto indica que la persona que escribió este manual, sabe muy poco de programación y probablemente nada de la instrucción "include". Su explicación corresponde más bien a una impresión de documentos!!!

Objetos[editar]

Definición[editar]

Php permite programar con el paradigma de Programación Orientada a Objetos (POO). Partiendo de que todo lo que nos rodea es un objeto. Tenemos que pensar en abstracción e identificar que tipo de objeto es el que queremos representar con sus propiedades (atributos) y lo que puede hacer (métodos o funciones del objeto). Los Objetos se representan a traves de Clases, y una clase no es mas que el Plano (para el arquitecto) de como se va a construir ese objeto con sus propiedades y métodos.

Ej: Auto.class.php

Class Auto 
{
    //Atributos
    private $color = '';
    private $puertas = 0;    

    //Metodos
    public function Auto()
    {

    }//Constructor Auto

    public function encender()
    {

    }//encender

}//class

Instancia[editar]

Para crear un objeto usamos el operador new

$ferrari = new Auto();

Herencia[editar]

La herencia le permite a un objeto hijo (child) heredar de otro objeto padre (father) sus atributos y propiedades comunes y en el objeto hijo tendriamos los metodos y propiedades particulares. Php solo tiene herencia simple. Por ejemplo:

//Clase Padre
class Vehiculo
{
    //Atributos
    private $color = '';
    private $anio = 0;<nowiki>4444</nowiki>

    //Metodos
    public function __construct()
    {

    }//constuctor

    public function encender()
    {

    }//encender

    //Getters
    public function getColor()
    {
       return $this->color;
    }

    //Setters
    public function setColor($color = '')
    {
        if(!empty($color)){
            $this->color = $color;
        }
    }

}//class


//Clase Hija
class Moto extends Vehiculo
{
  //Atributos
  private $ruedas = 0;
  
  public function Moto()
  {
     $this->ruedas = 2;
  }
  
  //Getters
  public function getRuedas()
  {
      return $this->ruedas();
  } 
}//Class Moto


//Instancia:

$honda = new Moto();
$honda->setColor('negro');
echo $honda->getColor();
echo "<br />";
echo $honda->getRuedas();

Retornara: negro
2

Véase también[editar]

Aunque en el curso se habla de que PHP puede heredar solo de una clase, en este enlace se dice que PHP posee herencia múltiple, por lo cual es necesario hacer la aclaración pertinente.