Usuario:ManuelRomero/CertificadoWeb2021/IntroduccionPHP/resumen

De WikiEducator
Saltar a: navegación, buscar

Volver



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 phpstorm
 sudo snap install phpstorm --clasic
Instalar visual Code
 sudo snap install code --clasic


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
Instalar pluging de xdebug para chrome y phpstorm
https://www.jetbrains.com/help/phpstorm/browser-debugging-extensions.html

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
  1. Secuenciales
  2. Selectivas
  3. 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 donde las expresiones tienen un papel muy importante a la hora de evaluar una instrución
  • Esto quiere decir que en php si estoy comparando valores, fuerza a que los valores sean del mismo tipo (por ejemplo)
  • 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// .... (+-*/%)
Expresión nave espacial
  • Campara dos valores y retorna un entero de la comparación
$a=5;
$b=6;
echo  ($a<=>$b); //Muestra -1
echo  ($b<=>$a); //Muestra 1
$a=5;
$b=5;
echo  ($a<=>$b); //Muestra 0

Operador fusión de nullos

  • Encadena expresiónes/valores con ?? y retorna el primero que no sea nul
$a  = null;
$b = null;
$c = "Valor";
$d = "Otro valor;
echo $a ?? $c ; //Visualiza Valor
echo $a ?? $b ?? $c ?? ?? $d .... //Visualiza Valor

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'];