Usuario:ManuelRomero/NewPHP/inaem 2018/resumen
De WikiEducator
Instalación
- Instalar apache
apt-get install apache2
- Instalar php
- php (cli y lib)
apt-get install php libapache2-mod-php
- Ver el log de posibles errores de apache
tail -f /var/log/apache2/error.log
- Instalar netbenas
1.-Tener instalado java en su version 8
sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install openjdk-8-jdk
2.-Descargar el fichero en versión 8.2
https://netbeans.org/downloads/8.2/
3.-Ejecutar en un terminal
sh ./netbeans-8.2-linux.sh
Tomar todas las opciones por defecto
4.-Si no funciona modificar el fichero de configuración de netbeans buscar el directorio, suele estar en el home de cada usuario, pr. en clase que el usuario es alumno <source lang=php> gedit /home/alumno/netbeans/etc/netbeeans.conf
5.- Actualizar el parámetro que especifica la ubicación de java
netbeans_jdkhome="/path/to/jdk"
- Instalar xdebug
1.-Instalamos paquete de desarrolo dev y pear
sudo apt-get install php-dev php-pear
2.- Instalamos xdebug
sudo pecl install xdebug
3.- Actulizamos el fichero php.ini
*añadimos dos líneas, donde se quiera, mejor al final del fichero
sudo gedit /etc/php/7.2/apache2/php.ini
- Agregamos (La instalación ya nos lo notifica)
zend_extension=/usr/lib/php/20170718/xdebug.so xdebug.remote_enable=on
Sintaxis básica
- Código embebido
<?php //Instruciones php..... ?> ;PHP es un lenguaje que se ejecuta en el servidor *El cliente nunca verá ninguna instrucción en la página que el servidor le entrega ;Dónde poner le código *En un mismo fichero puedo abrir y cerrar etiquetas *El comportamiento es como si todo es un fichero, que es lo que es. Verifica que entiendes esta idea en este código Observa como la variable la incremento en diferentes secciones de php <source lang=php> <?php $titulo= "El título de la página " $trozosCodigo =0; ?> <source lang=php> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Probando cosas con título <?php echo $titulo; $trozosCodigo++;?></title> <?php $trozosCodigo++; ?> </head> <body> <?php echo "Otro trozo de código php "; $trozosCodigo++; ?> </body> <?php $trozosCodigo+; echo "En total hay $trozosCodigo de código;"; ?> </html>
- Intentamos poner la mayor parte de código posible en la parte superior antes del DocType
- Esto se llama usar un enfoque Modelo Vista (html) -Controlador (php)
Variables
- Identificadores que empiezan por $
- No se declarar explícitamente, su declaración es en su primera asignación
<?php $variable = "valor"; ?>
- Lenguaje tipado de declaración dinámica
- 5 tipos básicos
- Los tipos pueden cambiar en cualquier momento,
- El tipo de la variable depende del valor que tenga asignado en un momento dado
<?php $a= 5; // $a de tipo entero $a="maria"; // $a de tipo string $a=true; // $a de tipo booleano $a=5.5; // $a de tipo float $a=null; // $a de tipo null ?>
- Diferencia valor de formato
<?php $a= 0b1101; // $a de tipo entero con formato binario echo $a; //Visualizará 13 el valor asignado con formato decimal $b=64; $valor_binario = decbin($b);//Podemos forzar el formato del valor con funciones echo "Valor de $b en binario $valor" //Mostrará Valor de 64 en binario 1000000 ?>
Estructuras de control
- Ya sabemos que hay 3 tipos de estructuras de control
- Secuenciales
- Selectivas
- repetitivas o iterativas
- Secuenciales
- Son instrucciones que van una detrás de otra
- Usamos el ; para separar una de otra
//instruccion de asignacion $variable = valor o expresion ; //instruccion de invocacion funcion del sistema o creada por nosotros mail ($destino, $submit, $mensaje, $from) ; //instruccion de escribir echo "hola valientes y entusiastas de la programacion"; //instruccion de lectura $variable = $_POST['variable']; //instruccion de inicio fin de bloque en este caso sin punto y coma { }
- selectivas
if (expresión_booleana) { instrucciones a ejecutar en el caso de que expresión_booleana retorne true Si solo hubiera una instrucción podemos omitir las llaves }else{ instrucciones a ejecutar en el caso de que expresión_booleana retorne false Esta parte no es obligatoria }
if (expresion_booleana) instruccion_if else instruccion_else
if (expresion_booleana) { instruccion_if } else { instruccion_else }
if (expresion_booleana): instruccio_1 instruccio_2 instruccio_3 else: instruccio_1 instruccio_2 instruccio_3 endif;
if (expresion_booleana){ instruccio_1 instruccio_2 instruccio_3 }else{ instruccio_1 instruccio_2 instruccio_3 }
- Tenemos también el llamado selector múltiple
switch ($variable){ case valor1 : instrucciones break; case valor2 : instrucciones break; // ....... default: instrucciones_default break; }
- Recordad que si no ponemos el braek, se ejecutarán todos los case hasta encontrar un break o fin del switch
- La sección default es opcional y se entrará en ella si no hay coincidencia previa
- Lo que se hace en cada case es mirar a ver si el valor de la variable coincide
- bucle
- Como ya sabemos tenemos tres tipos
- El bucle clásico
- Recordemos las tres reglas de hora (inicializar, comparar correctamente, actualizar).
while (expresion_booleana){ //instrucciones }
- El bucle contador
- Ponemos un ejemplo que se va incrementando la variable de 11
- Podemos mocificar cada una de las tres partes del for
for ($var = valor_inicial; $var < valor_final; $var++){ //instrucciones }
- El bucle que ejecuta una iteración segura
do{ //instrucciones }while (expresion_booleana);
- Observar que en este caso al final va un ; pues separamos de la siguiente instrucción
Escribir mensajes
echo"texto ", "mas texto, " tercer parámetro mas texto"; print "solo puedo leer con un parámetro"; printf ("Este me permite escribir con formato usando \%);
Expresiones
- PHP es un lenguaje orientado a expresiones
- Esto quiere decir que en php todo se consideran expresiones
- una expresión es un conjunto de valores (operadorandos) y operadores
- Los operadores actúan sobre los operandos y obtengo un valor como resultado de evaluar y realizar los cálculos de la expresión
Expresiones de asignación
- Dan como resultado el valor que asigno
$a = 5; echo "Quiero ver el valor de esta expresion ".$a=5; //Veré que me imprime 5
Expresiones aritméticas
- Dan como resultado el cálculo obtenido
$b = ($a+5*$c-8 /5)%3// .... (+-*/%)
Expresiones booleanas
- Esta expresión da como resultado un valor true o false
- Puenden ser de dos tipos
comparación
- <, > <=, >=, !=, ==, ===, !==
- Hay qu tener cuidado con la igualdad de valor (==) y la igualdad de valor y tipo (===)
$a = 10; if ($a == true) echo "Esto es cierto porque $a se adapta a true"; if ($a === true) echo "Esto es false porque $a se adapta a true"; $a = "pedro" if ($a == true) echo "Esto es cierto porque $a no es nulo y al transformar en booleano se toma como true"; if ($a === true) echo "Esto no es cierto ya que $a no es true ya que es de tipo string y no booleano ";
- Ver la siguiente tabla para mas detalle
http://php.net/manual/es/types.comparisons.php
lógicas
- and && or || xor
Leer valores
- Para leer valores necesitamos un formulario (no es la única forma pero si la más usada)
- Otras maneras leer de ficheros por ejemplo
- La idea es que al hacer una solicitud web vienen también todos los contenidos de los diferentes input de un formulario
- form
<form action="ficheroPhpAEjecutar.php" method="POST" <input type = "text|radio| ..." name="id_para_leer_en_php" value ="valor_por_defecto" <input type=submit value="enviar"> <form>
- Recordad los atributos importantes
- El name de los input es la forma de leer en servidor
- Cuando hacemos click en el submit es cuando invocamos al fichero especificado
- leer
$variable =$_POST["id_para_leer_en_php"] ; $variable =$_GET["id_para_leer_en_php"] ; $variable =$_REQUEST["id_para_leer_en_php"] ; $variable = intput_filter (INPUT_POST, "id_para_leer_en_php", FILTER.....) ; $variable = intput_filter (INPUT_GET, "id_para_leer_en_php", FILTER.....) ;
- Si pasamos un filtro, no podemos leer arrays.
- Siempre leeremos como una cadena de caracteres
Ver si enviamos un formulario
- Para ver si estoy accediendo a una página por que he hecho click en el submit de un formulario sería así
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <fieldset> <legend>Datos de acceso</legend> <form action="index.php"method="POST"> Nombre <input type="text" name="nombre" id=""><br /> Password <input type="text" name="pass" id=""><br /> <input type="submit" value="Validar" name="enviar"> </form> </fieldset>
- En este caso el php sería
if (isset($_POST['enviar'])) { //Si estoy aquí es por que he hecho click en el submit cuyo name es enviar }
Acceder a los contenidos de los input de un formulario
- Importente el atributo method del formulario
Puede ser POST GET
- Si usamos POST leeré con la superglobal $_POST
- Si usamos FET leeré con la superglobal $_GET
- Miramos el ejemplo siguiente
- El html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <link rel="stylesheet" href="estilo.css" type="text/css"/> </head> <body> <fieldset> <legend>Datos de acceso</legend> <form action="index.php"method="POST"> Nombre <input type="text" name="nombre" id=""><br /> Password <input type="text" name="pass" id=""><br /> <input type="submit" value="Validar" name="enviar"> </form> </fieldset> </body> </html>
- El php
- Para leer el nombre y el pass
- Muy importante: los valores del atributo name del input correspondinete
$user = $_POST['nombre']; $pass = $_POST['pass'];