Diferencia entre revisiones de «Usuario:ManuelRomero/NewPHP/inaem 2018/resumen»

De WikiEducator
Saltar a: navegación, buscar
Línea 3: Línea 3:
  
 
===Instalación===
 
===Instalación===
*Instalar '''''apache'''''
+
;Instalar '''''apache'''''
 
<source lang=php>
 
<source lang=php>
 
apt-get install apache2
 
apt-get install apache2
Línea 15: Línea 15:
 
<source lang=php>
 
<source lang=php>
 
  tail -f /var/log/apache2/error.log
 
  tail -f /var/log/apache2/error.log
 +
</source>
 +
;Instalar netbenas
 +
1.-Tener instalado java en su version 8
 +
<source lang=bash>
 +
sudo add-apt-repository ppa:webupd8team/java
 +
sudo apt-get update
 +
sudo apt-get install openjdk-8-jdk
 +
</source>
 +
2.-Descargar el fichero en versión 8.2
 +
<source lang=bash>
 +
https://netbeans.org/downloads/8.2/
 +
</source>
 +
3.-Ejecutar en un terminal
 +
<source lang=bash>
 +
sh ./netbeans-8.2-linux.sh
 +
</source>
 +
Tomar todas las opciones por defecto
 +
<source lang=bash>
 +
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
 +
</source>
 +
5.- Actualizar el parámetro que especifica la ubicación de java
 +
<source lang=bash>
 +
netbeans_jdkhome="/path/to/jdk"
 
</source>
 
</source>
  
 
+
;Instalar xdebug
 +
1.-Instalamos paquete de desarrolo '''''dev''''' y '''''pear'''''
 
<source lang=php>
 
<source lang=php>
*mysql (cliente y servidor)
+
sudo apt-get install php-dev php-pear
*netbeans
+
</source>
**(java)
+
2.- Instalamos xdebug
*debug
+
<source lang=php>
 +
sudo pecl install xdebug
 +
</source>
 +
3.- Actulizamos el fichero '''''php.ini'''''
 +
*añadimos dos líneas, donde se quiera, mejor al final del fichero
 +
<source lang=bash>
 +
sudo gedit /etc/php/7.2/apache2/php.ini
 +
</source>
 +
;Agregamos (La instalación ya nos lo notifica)
 +
<source lang=bash>
 +
zend_extension=/usr/lib/php/20170718/xdebug.so
 +
xdebug.remote_enable=on
 +
</source>
 +
  
 
===Sintaxis básica===
 
===Sintaxis básica===
Línea 28: Línea 68:
 
<source lang=php>
 
<source lang=php>
 
<?php
 
<?php
.....
+
//Instruciones php.....
 
?>
 
?>
</source>
 
 
;PHP es un lenguaje que se ejecuta en el servidor
 
;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
 
*El cliente nunca verá ninguna instrucción en la página que el servidor le entrega
Línea 36: Línea 75:
 
;Dónde poner le código
 
;Dónde poner le código
 
*En un mismo fichero puedo abrir y cerrar etiquetas
 
*En un mismo fichero puedo abrir y cerrar etiquetas
*El comportamiento es como si todo es un fichero, que es lo que es
+
*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>
 
<source lang=php>
 
<?php
 
<?php
Línea 48: Línea 89:
 
         <meta charset="UTF-8">
 
         <meta charset="UTF-8">
 
         <title>Probando cosas con título <?php echo $titulo; $trozosCodigo++;?></title>
 
         <title>Probando cosas con título <?php echo $titulo; $trozosCodigo++;?></title>
 +
        <?php
 +
              $trozosCodigo++;
 +
        ?>
 +
 
     </head>
 
     </head>
 
     <body>
 
     <body>
 
         <?php
 
         <?php
 
               echo "Otro trozo de código php ";
 
               echo "Otro trozo de código php ";
               $trozosCodigo+;
+
               $trozosCodigo++;
 
         ?>
 
         ?>
  
Línea 59: Línea 104:
 
               $trozosCodigo+;
 
               $trozosCodigo+;
 
               echo "En total hay $trozosCodigo de código;";
 
               echo "En total hay $trozosCodigo de código;";
 
 
         ?>
 
         ?>
 
</html>  
 
</html>  
 
</source>
 
</source>
 
*Intentamos poner la mayor parte de código posible  en la parte superior antes del DocType
 
*Intentamos poner la mayor parte de código posible  en la parte superior antes del DocType
;Variables
+
*Esto se llama usar un enfoque '''''Modelo Vista (html) -Controlador (php)
 +
===Variables===
 
*Identificadores que empiezan por '''''$'''''
 
*Identificadores que empiezan por '''''$'''''
 +
*No se declarar explícitamente, su declaración es en su primera asignación
 
<source lang=php>
 
<source lang=php>
 
<?php
 
<?php
Línea 71: Línea 117:
 
?>
 
?>
 
</source>
 
</source>
 
+
*Lenguaje tipado de declaración dinámica
*Lenguaje fuertemente tipado de declaración dinámica
+
 
*5 tipos básicos
 
*5 tipos básicos
*Los tipos pueden cambiar en cualquier momento
+
*Los tipos pueden cambiar en cualquier momento,
 +
*El tipo de la variable depende del valor que tenga asignado en un momento dado
 
<source lang=php>
 
<source lang=php>
 
<?php
 
<?php
Línea 84: Línea 130:
 
?>
 
?>
 
</source>
 
</source>
 +
*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===
 
===Estructuras de control===
 
*Ya sabemos que hay 3 tipos de estructuras de control
 
*Ya sabemos que hay 3 tipos de estructuras de control
Línea 89: Línea 143:
 
#Selectivas
 
#Selectivas
 
#repetitivas o iterativas
 
#repetitivas o iterativas
 
 
;Secuenciales
 
;Secuenciales
 
*Son instrucciones que van una detrás de otra
 
*Son instrucciones que van una detrás de otra

Revisión de 00:43 6 feb 2019



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