# Curso de PHP

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 7.3. 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

* 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.

## Como insertar PHP en páginas HTML

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.
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í:
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

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:
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:
De esta forma el comentario solo haría efecto hasta */, sin afectar al código.

## Hola Mundo

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í:
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:
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:
Nos mostrará: Hola usuario. Para marcar el salto de línea hay que poner <br />.

## Variables

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:
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
### Selección Simple

Sentencia IF:
La sentencia if realiza un bloque de código siempre que la condición de este se cumpla, ejemplo:
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)

### Selecciones anidadas

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:
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)

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

### Bucle while

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:
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:

### Bucle do...while

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:
Donde:
Ejemplo:
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

La sintaxis del bucle FOR es la siguiente:
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:
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:

### Bucle foreach

Se aplican dos sintaxis a este bucle:
Cuando hay un vector con sólo valores:
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:
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:
Ejemplo 2: foreach con arreglo que tiene tanto clave como valor:

## Vectores , Arreglos o Arrays

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:
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:
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:
Retornaria el mismo resultado:
caniche caniche
Para obtener la cantidad de elementos de un array se utiliza:
Esto nos daria como resultado: 2
Para insertar elementos en un Array tenemos dos maneras:
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:

### Vectores multidimensionales

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:
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:

## Funciones

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:
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

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:
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
### Definición

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

### Instancia

Para crear un objeto usamos el operador new

### Herencia

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:
Retornara: negro 2