Diferencia entre revisiones de «Usuario:ManuelRomero/php/NewPHP/B2T1/Sintaxis P»

De WikiEducator
Saltar a: navegación, buscar
(Página creada con «{{:Usuario:ManuelRomero/dwes/B2T1/nav}} __TOC__ {{#widget:Slides}} <div class="slides layout-regular template-default"> <div class="slide"> ==Introducción a PHP== <br...»)
 
 
(33 revisiones intermedias por el mismo usuario no mostrado)
Línea 1: Línea 1:
 
{{:Usuario:ManuelRomero/dwes/B2T1/nav}}
 
{{:Usuario:ManuelRomero/dwes/B2T1/nav}}
 
+
__NOTOC__
 
+
 
+
__TOC__
+
 
{{#widget:Slides}}
 
{{#widget:Slides}}
 
<div class="slides layout-regular template-default">
 
<div class="slides layout-regular template-default">
  
 
<div class="slide">
 
<div class="slide">
==Introducción a PHP==
+
===Introducción a PHP===
 
<br />
 
<br />
 
{{MRM_Objetivos|Title=Sección de introducción a PHP|
 
{{MRM_Objetivos|Title=Sección de introducción a PHP|
*En esta sección veremos qué es el lenguaje php y para qué sirve
+
*En esta sección veremos qué es el lenguaje php y para qué sirve.
 
}}
 
}}
 
</div>
 
</div>
Línea 18: Línea 15:
 
===Qué es php===
 
===Qué es php===
 
*'''''PHP''''' (acrónimo de PHP: Hypertext Preprocessor)
 
*'''''PHP''''' (acrónimo de PHP: Hypertext Preprocessor)
De php podríamos decir
+
*Es un '''''lenguaje''''' de '''código abierto'''.
*Es un lenguaje de código abierto
+
*Muy popular (Podríamos pensar en un estándar?)
*Muy popular (Podríamos pensar en un estándar?), una gran comunidad de soporte en internet que aporta, colabora y soluciona dudas
+
*'''''Gran comunidad''''' con soporte en internet que aporta, colabora y soluciona dudas.
*Especialmente adecuado para desarrollo web (Se puede usar como lenguaje de escritorio, pero no es su principal propósito).
+
*Para el '''''desarrollo web'''''.
*Actualmente está la versión 7.2.9 (16 Aug 2018), estando ya en testing la versión 7.3.
+
*Nueva '''''versión 7''''' con grandes cambios en el motor.
*Ver las nuevas características de php
+
*Se usa mucho la versión '''5.9'''
 +
*Actualmente está la versión '''''7.2.9 (16 Aug 2018)'''''.
 +
</div>
 +
<div class="slide">
 
{{MRM_Recursos de la Web|Title=Caracterísitcas de php 7|
 
{{MRM_Recursos de la Web|Title=Caracterísitcas de php 7|
 
http://php.net/manual/es/migration70.php
 
http://php.net/manual/es/migration70.php
 
}}
 
}}
*Se usa mucho la versión 5.9
+
*Principales cambios en el '''''motor de ejecución''''' (Mucho mas potente).
 +
*Muy pocas ''imcompatibilidades''.
 +
*Permite '''''tipados''''' explícitos.
 
</div>
 
</div>
 
 
<div class="slide">
 
<div class="slide">
 
;características de php
 
;características de php
Línea 43: Línea 44:
 
;Obtención del lenguaje de marcas para mostrar en el cliente
 
;Obtención del lenguaje de marcas para mostrar en el cliente
 
[[Imagen:procesoPHP.png ]]
 
[[Imagen:procesoPHP.png ]]
 +
</div>
 +
<div class="slide">
 +
<br />
 
{{MRM_Puntos clave|
 
{{MRM_Puntos clave|
;El documento PHP, una vez interpretado correctamente en el  servidor, produce una página HTML que será enviada al cliente.
+
;El documento PHP, una vez interpretado correctamente en el  servidor, produce generalmente una página HTML que será enviada al cliente.
 
}}
 
}}
 
</div>
 
</div>
Línea 60: Línea 64:
 
;El servidor en acción
 
;El servidor en acción
 
{{MRM_Puntos clave|
 
{{MRM_Puntos clave|
; El intérprete PHP ignora el texto del fichero HTML
+
; El intérprete PHP ignora el texto  
; Hasta que encuentra una etiqueta de inicio del bloque de código PHP embebido.
+
; Busca etiquetas de inicio del bloque de código PHP.
*Entonces interpreta las instrucciones hasta el final de etiqueta generando la salida correspondiente que se añade al documento html que se entrega al cliente (en caso de que las instrucciones lo generen)
+
* Interpreta las instrucciones hasta el final de etiqueta
 +
* Repite el proceso hasta el final del fichero
 +
* Reescribe el fichero entero sustituyendo el código php por la salida de texto que genera
 +
* Dicho fichero se le entrega al cliente  
 
}}
 
}}
 
</div>
 
</div>
Línea 70: Línea 77:
 
===Restricciones del servidor con php===
 
===Restricciones del servidor con php===
 
*Como PHP se ejecuta del lado del servidor sólo puede tener acceso a los datos del propio servidor.
 
*Como PHP se ejecuta del lado del servidor sólo puede tener acceso a los datos del propio servidor.
 +
{{MRM_Actividad|Title=Restricciones de php|
 
**No puede acceder a los recursos del cliente
 
**No puede acceder a los recursos del cliente
 
**No puede saber qué hora es en el cliente
 
**No puede saber qué hora es en el cliente
 
**No puede acceder a los archivos del cliente
 
**No puede acceder a los archivos del cliente
 
***Salvo la excepción de las Cookies
 
***Salvo la excepción de las Cookies
 +
}}
 
</div>
 
</div>
  
 
<div class="slide">
 
<div class="slide">
 
===Configuraciones===
 
===Configuraciones===
*PHP se puede instalar como un servicio independiente (PHP-FPM (FastCGI Process Manager)) o como un módulo de apache php5-mod. Realmente es más eficaz por temas de memoria que corra como un servicio independiente, siendo éste, un tema más de administración que de desarrollo.
+
*PHP se puede instalar:
</div>
+
#'''''Servicio independiente''''' (PHP-FPM (FastCGI Process Manager)).
 
+
# Como un '''''módulo de apache''''', php-mod.
<div class="slide">
+
;Configuración
+
Por comodidad (todo centrado en el servicio de apache2) en este módulo lo hemos instalado  como un módulo de apache, pero en producción se suele instalar como servicio independiente (en este caso se ha de rebotar el servicio de apache o ngix (según servidor) independientemente del servicio de php según los ficheros de configuración que se modifiquen en un momento dado.
+
En cualquier caso, al instalar php, bien como módulo de apache o como servicio independiente, se crea un fichero de cofiguración dónde tenemos las diferentes directivas que podremos modificar (recordad xdebug que modificamos en php.ini).
+
 
</div>
 
</div>
  
Línea 143: Línea 148:
 
<div class="slide">
 
<div class="slide">
 
{{MRM_Actividad|Title=Probando primer programa|
 
{{MRM_Actividad|Title=Probando primer programa|
{{Tip|existen una función llamada '''''phpinfo()'''''.
+
{{Tip|existen una función llamada '''''phpinfo()'''''}}
*Vamos a probarla y ver la información que genera}}
+
*Vamos a probarla y ver la información que genera
 +
}}
 +
</div>
 +
<div class="slide">
 
*Haz un programa que en php que ejecute la función '''''phpinfo()'''''
 
*Haz un programa que en php que ejecute la función '''''phpinfo()'''''
 
{{Plegable|hide|Primer programa|
 
{{Plegable|hide|Primer programa|
 
<source lang=php>
 
<source lang=php>
 
 
<html>
 
<html>
 
     <head>
 
     <head>
Línea 161: Línea 168:
 
</html>
 
</html>
 
</source>
 
</source>
}}
 
 
}}
 
}}
 
</div>
 
</div>
Línea 167: Línea 173:
  
 
{{MRM_Actividad|Title=Probando la extensión|
 
{{MRM_Actividad|Title=Probando la extensión|
;Verifica a ver qué ocurre si la extensión del fichero no es php
+
;Verifica qué ocurre si la extensión del fichero no es php.
 +
*Concluye el motivo.
 
}}
 
}}
 
</div>
 
</div>
 +
<!-----PROGRAMA CONJUNTO DE INSTRUCCIONES --->
 +
<div class=slide>
 +
===Programa: conjunto de instrucciones===
 +
{{MRM_Objetivo|
 +
'''''Un programa es un conjunto de instrucciones'''''
 +
*Analizaremos las instrucciones que hay.
 +
*Posteriormente Veremos cómo se escriben en php.
 +
}}
 +
</div>
 +
 +
<div class="slide">
 +
===Planteando un lenguaje de programación===
 +
;Léxicos
 +
*Son las palabras reservadas del lenguaje.
 +
http://php.net/manual/es/reserved.keywords.php
 +
;Sintaxis
 +
Reglas de construcción.
 +
Son las ya conocidas, pero veremos cómo se construyen las expresiones.
 +
</div>
 +
 +
<div class="slide">
 +
;Semántica
 +
Habla del significado.
 +
{{MRM_Puntos clave|
 +
;Estudiaremos alguna peculiaridad, como el hecho de que php es un lenguaje '''''altamente orientado a expresiones'''''
 +
}}
 +
</div>
 +
 +
<div class="slide">
 +
===Instrucciones en un lenguaje de programación===
 +
#Inicio Fin de bloque
 +
#Instrucción/función de leer del teclado, escribir por pantalla
 +
#Declaraciones (variables, constantes, funciones, clases, objetos, ...)
 +
#Asignación
 +
#Invocación (llamada a función o método)
 +
#Estructura de control (selectiva, iterativa)
 +
</div>
 +
 +
 +
<div class="slide">
 +
;Instrucción de inicio fin de bloque
 +
<source lang = php>
 +
{ //Instrucción de inicio de bloque
 +
} //Instrucción de fin de bloque
 +
</source>
 +
</div>
 +
<div class="slide">
 +
 +
{{MRM_Puntos clave|Title= PHP instrucción inicio fin|
 +
;En PHP el bloque '''inicio''' y '''fin''' está especificado con los caracteres
 +
<source lang=php>
 +
  { //inicio de bloque
 +
  } //fin de bloque
 +
</source>
 +
}}
 +
</div>
 +
<div class="slide">
 +
;inicio del programa se especifica con las etiquetas
 +
<source lang=php>
 +
<?php //Etiqueta de inicio de script
 +
 +
?>  //Etiqueta de fin de script
 +
</source>
 +
}}
 +
</div>
 +
 +
<div class="slide">
 +
;Separando instrucciones
 +
* ''''';''''' (punto y coma)
 +
*Su uso es obligatorio.
 +
*En la '''''última instrucción'''''  se puede obviar (excepción).
 +
**'''''?>''''' implica esta instrucción.
 +
*La instrucción inicio de bloque y fin de bloque no lleva nunca ''''';'''''
 +
</div>
 +
 +
<div class="slide">
 +
{{Tip|Si sólo queremos insertar 1 instrucción puede ser interesante  obviar el ''''';'''''.
 +
<source lang=php>
 +
  <html>
 +
    ......
 +
    <?php echo "hola" ?>
 +
    <!-- instrucciones html -->
 +
    <?php echo "otro hola" ?>
 +
    <!-- mas instrucciones html -->
 +
    <?php echo "otra instrucción " ?>
 +
    .....
 +
  </html>
 +
</source>
 +
}}
 +
</div>
 +
 +
<div class="slide">
 +
;Poniendo ''''';'''''
 +
{{Tip|También puede haber ;
 +
<source lang=php>
 +
  <html>
 +
    ......
 +
    <?php echo "hola" ;?>
 +
    <!-- instrucciones html -->
 +
    <?php echo "otro hola" ; ?>
 +
    <!-- mas instrucciones html -->
 +
    <?php echo "otra instrucción " ; ?>
 +
    .....
 +
  </html>
 +
</source>
 +
}}
 +
</div>
 +
<div class="slide">
 +
 +
{{MRM_Actividad|Title=Probando código php|
 +
;Haz un programa que dónde incluyas código dentro del body.
 +
:Muestra con etiqueta h1, h2 y h3 tres frases.
 +
:Utiliza la función echo para visualizar.
 +
;Muestra en el título un texto escrito desde php.
 +
;Compara el fichero del servidor con el que recibe el cliente.
 +
}}
 +
</div>
 +
<div class="slide">
 +
<div  style="font-size:18px">
 +
{{Plegable|hide|<h3>Posible solución</h3>|
 +
<source lang=html5>
 +
</body>
 +
</html>
 +
<!doctype html>
 +
<html lang="en">
 +
<head>
 +
    <meta charset="UTF-8">
 +
    <title>
 +
      <?php
 +
      echo "Este es un título desde php"
 +
      ?>
 +
    </title>
 +
</head>
 +
<body>
 +
  <?php
 +
    echo "<h1>Mensaje en texto de h1</h1>";
 +
    echo "<h2>Mensaje en texto de h2</h2>";
 +
    echo "<h3>Mensaje en texto de h3</h3>";
 +
  ?>
 +
</body>
 +
</html>
 +
</source>
 +
}}
 +
</div>
 +
}}
 +
</div>
 +
 +
<div class="slide">
 +
 +
<div  style="font-size:18px">
 +
;Esto es lo que ve el cliente
 +
<source lang=html5>
 +
</body>
 +
</html>
 +
<!doctype html>
 +
 +
<html lang="en">
 +
<head>
 +
    <meta charset="UTF-8">
 +
    <title>
 +
      Este es un título desde php
 +
  </title>
 +
</head>
 +
<body>
 +
    <h1>Mensaje en texto de h1</h1>
 +
    <h2>Mensaje en texto de h2</h2>
 +
    <h3>Mensaje en texto de h3</h3>
 +
</body>
 +
</html>
 +
</source>
 +
</div>
 +
</div>
 +
<div class="slide">
 +
[[Image:1.png]]
 +
</div>
 +
 +
 +
<!-- INSTRUCCION ESCRIBIR ------>
 +
<div class="slide">
 +
=== Funciones de salida===
 +
*Construcciones básicas para salida de caracteres
 +
*En PHP,en realidad no son funciones por lo que pueden ir sin paréntesis  (con o sin paréntesis):
 +
# '''''echo'''''
 +
# '''''print'''''
 +
*Existen otras funciones que iremos viendo según avance el curso
 +
printf, var_dump, print_r, ....
 +
</div>
 +
 +
<div class="slide">
 +
<!--4---------------------------------->
 +
 +
===echo===
 +
*Es el uso más sencillo
 +
*Imprime una cadena como argumentos
 +
*En la versión '''''sin paréntesis''''' , también puedes pasar una lista de argumentos.
 +
<source lang=php>
 +
<?php
 +
*echo “primer argumento”, “segundo argumento”, “tercer argumento”
 +
?>
 +
</source>
 +
</div>
 +
 +
<div class="slide">
 +
<!--4---------------------------------->
 +
 +
===print===
 +
*Esta sentencia es igual en uso y funcionalidad que echo
 +
*Tiene dos diferencias con echo
 +
#Sólo puede aceptar un argumento
 +
#Devuelve un valor booleano que representa si la sentencia ha tenido exito  o no
 +
</div>
 +
<div class="slide">
 +
{{Quiz_Multiple_Choice
 +
|title=Observa el siguiente código e indica si es o no correcto
 +
|body=
 +
*<source lang=php> echo 'hola caracola', 'hola','como estás';</source>
 +
** Correcto
 +
*** Cierto, '''''echo''''' admite una lista de parámetros
 +
** Incorrecto
 +
*** Revisa bien tu respuesta
 +
*<source lang=php> print 'hola caracola', 'hola','como estás';</source>
 +
** Correcto
 +
*** Revisa bien tu respuesta
 +
** Incorrecto
 +
*** Cierto, '''''print''''' no permite un listado de parámetros
 +
|mix=false
 +
|hint=
 +
}}
 +
</div>
 +
 +
 +
 +
<div class='slide'>
 +
===Comentarios ===
 +
*Son ignorados por el intérprete
 +
*No generan instrucciones
 +
*Se consideran parte del software
 +
</div>
 +
<div class='slide'>
 +
*En php tengo 4 formas de hacer comentarios
 +
<div style=font-size:20px>
 +
<source lang=php>
 +
<?php
 +
/*
 +
Este código no hace nada pero muestra
 +
la sintaxis de los comentarios
 +
como este que ocupa varias líneas tipo lenguaje C o Java
 +
*/
 +
$miVariable= 8;// Esta parte de la línea se ignorará
 +
$miVariable+= 8;# y esta parte de línea tambien
 +
echo "Valor de la variable $miVariable";
 +
//Este es otro comentario de una sola línea
 +
#Este es otro modo de hacer comentarios tipo script de linux
 +
/**
 +
Este comentario permite insertar información
 +
Para que luego php Documentor genere una página web
 +
Con la información de mi código
 +
*/
 +
</source>
 +
</div>
 +
</div>
 +
<div class='slide'>
 +
*Este código nos visualizará lo siguiente
 +
<source lang=php>
 +
Valor de la variable 16
 +
</source>
 +
El resto del código será ignorado
 +
</div>
 +
 +
<div class='slide'>
 +
*Es bueno escribir al principio del script
 +
<source lang=php>
 +
<?php
 +
/**
 +
* User: Nombre y apellidos
 +
* Date: 19/10/17
 +
* Version: 17:40
 +
*/
 +
</source>
 +
</div>
 +
<div class="slide">
 +
*Aquí tienes la referencia para ver las diferentes directivas para generar código
 +
*Más adelante en el curso las veremos.
 +
{{MRM_Recursos de la Web|
 +
*Directivas para comentarios https://phpdoc.org/docs/latest/index.html
 +
}}
 +
</div>
 +
 +
<div class="slide">
 +
<div style=font-size:18px>
 +
{{MRM_Actividad|Title=probando comentarios |
 +
*Escribe la  siguiente función anterior en un fichero php
 +
<source lang=php>
 +
function miFuncion($num1, $num2){
 +
    if ($num1>$num2)
 +
        return $num1;
 +
    else
 +
        return $num2;
 +
</source>
 +
}}
 +
</div>
 +
 +
</div>
 +
<div class='slide'>
 +
Ahora justo en la línea de encima de función escribe
 +
<source lang=php>
 +
/**
 +
</source>
 +
*y luego presiona intro
 +
*Te debería de quedar
 +
<div style=font-size:18px>
 +
<source lang=php>
 +
/**
 +
*
 +
* @param type $num1
 +
* @param type $num2
 +
* @return type
 +
*/
 +
function miFuncion($num1, $num2){
 +
    if ($num1>$num2)
 +
        return $num1;
 +
    else
 +
        return $num2;
 +
 
 +
</source>
 +
</div>
 +
</div>
 +
<div class='slide'>
 +
===Dónde poner el código embebido===
 +
<br/>
 +
{{MRM_Pregunta|Dónde escribir código php|{{feedback|Dónde queramos que se ejecute algo}} }}
 +
</div>
 +
 +
<div class="slide">
 +
<hr  />
 +
*Donde queramos que se ejecute algo
 +
<hr/>
 +
[[Imagen:codigoPHP.png|center|900px]]
 +
*Se ejecuta como si fuera un solo programa
 +
*A la hora de incluir php podemos se usa mucho la filosofía Modelo Vista /Controlador que veremos en otro tema
 +
{{MRM_Resumen|Title=Modelo vista controlador|
 +
*Trata de separar el código según su cometido, de forma muy resumida
 +
*Hay acciones que realizan cálculos y obtienen resultados (Controlador
 +
*Hay acciones que lo que hacen es visualziar valores (Vista)
 +
*Hay acciones que se encargan de interactuar con la base de datos (Modelo)
 +
}}
 +
{{MRM_Puntos clave|Title=Empecemos aplicar el modelo vista controlador|
 +
*Podemos llevar este criterio desde el principio siguiente el esquema siguiente
 +
{{Plegable|hide|esqueleto MVC|
 +
<source lang=html5>
 +
<!-- Empecemos nuestro fichero escribiendo instrucciones php
 +
Estas instrucciones realizarán cálculos y obtendrán valores
 +
En ningúm momento generan salidas,
 +
Trataremos de almacenar los valores en variables
 +
-->
 +
<?php
 +
//instrucciones php
 +
$variables = "Mensaje escrito desde php";
 +
?>
 +
<!--Ahora el código html-->
 +
<!DOCTYPE html>
 +
<html>
 +
    <head>
 +
        <meta charset="UTF-8">
 +
        <title>probando php</title>
 +
    </head>
 +
    <body>
 +
            <!--Dentro del html cuando necesitemos ver valores
 +
                los escribiemo
 +
                También puede ser que necesitemos instrucciones
 +
                las escribimos, pero intentando escribir lo necesario.
 +
                Esto es vista
 +
            -->
 +
        <h1> <?php echo $variable ?></h1>
 +
    </body>
 +
</html>
 +
</source>
 +
 +
}}
 +
}}
 +
</div>
 +
<div class="slide">
 +
 +
 +
{{MRM_Ejemplo|Title=Programa para ver si un número es o no par|
 +
No te preocupes si no entiendes el código, lo iremos viendo
 +
<source lang=php>
 +
<?php
 +
 +
//-----------CONTROLADOR-----------------------------
 +
//Instrucciones que realizan cálculos
 +
//Guardo el resultado que quiero mostrar en variables
 +
$a = rand(1, 100); //Genero un número aleatorio
 +
$fecha = date("d m Y", time()); //Obtenemos la fecha
 +
$title = "Hoy, $fecha, veremos si '$a' es par o impar "; //Creo un título
 +
if ($a % 2 == 0) //Si el número es par
 +
    $msj = "El número $a es par";
 +
else
 +
    $msj = "El número $a es impar";
 +
?>
 +
 +
<!-- Ahora metemos el código php cuando lo necesitemos-->
 +
<!------------------- VISTA (solo la parte php)----------------------->
 +
<!DOCTYPE html>
 +
<html>
 +
    <head>
 +
        <meta charset="UTF-8">
 +
        <title>probando php</title>
 +
    </head>
 +
    <body>
 +
        <h1> <?php echo $title ?></h1>
 +
        <hr  />
 +
        <h3> <?php echo $msj ?></h3>
 +
 +
    </body>
 +
</html>
 +
</source>
 +
 +
 +
}}
 +
 +
 +
 +
 +
 +
 +
</div>
 +
 +
<div class="slide">
 +
 +
===Escribir PHP con directivas de inclusión===
 +
*Podemos escribir el código php escribiéndolo en un fichero  aparte y luego lo incluimos.
 +
**Incluimos el fichero explícitamente
 +
**Para ello usamos directivas o instrucciones del tipo '''''include'''''
 +
<source lang=php>
 +
  include('ruta/nobrefichero');
 +
  require('ruta/nobrefichero');
 +
  include_once('ruta/nombrefichero');
 +
  require_once('ruta/nombrefichero');
 +
</source>
 +
</div>
 +
 +
<div class="slide">
 +
;Ambas son palabras reservadas del lenguaje y sirven para incluir el contenido de un fichero con sentencias php en esa posición del código.
 +
{{MRM_Puntos clave|Title=Include Vs Require|
 +
*Ambas incluyen el contenido de un fichero php en esa posición
 +
**Con include si no se encuentra se continúa ejecutando en esa posición
 +
**Con require si no está el fichero se detiene en ese punto la ejecución del script}}
 +
</div>
 +
 +
<div class="slide">
 +
{{MRM_Puntos clave|Title=include/require Vs include_once/require_once |
 +
*Ambas incluyen el contenido de un fichero php en esa posición
 +
**include/require siempre buscan e incluyen el fichero en esa posición
 +
**include_once/require_once antes de incluirlo mira a ver si ya lo incluyó previamente en cuyo caso ya no lo hace}}
 +
</div>
 +
 +
<div class="slide">
 +
{{MRM_Actividad|Title=Probando include require
 +
|Crea 4 ficheros con el siguiente código
 +
'''''fichero_include.php'''''
 +
<source lang=php>
 +
<?php
 +
  echo "<b><i>Hola desde un fichero include </b></i><hr />";
 +
?>
 +
</source>
 +
'''''fichero_include_once.php'''''
 +
<source lang=php>
 +
<?php
 +
echo "<b><i>Hola desde un fichero include once </b></i><hr />";
 +
?>
 +
</source>
 +
'''''fichero_require.php'''''
 +
<source lang=php>
 +
<?php
 +
  echo "<b><i>Hola desde un fichero require </b></i><hr />";
 +
?>
 +
</source>
 +
'''''fichero_require_once.php'''''
 +
<source lang=php>
 +
<?php
 +
  echo "<b><i>Hola desde un fichero require once </b></i><hr />";
 +
?>
 +
</source>
 +
'''''Ahora crea un programa principal dónde uses las instrucciones de inclusión vistas en este apartado'''''.
 +
<source lang=php>
 +
<?php
 +
 +
echo "<h2>Ahora vamos a incluir un fichero con include</h2>";
 +
include 'ficheros/fichero_include.php';
 +
 +
echo "<h2>ahora vamos a incluir un fichero con require</h2>";
 +
require 'ficheros/fichero_require.php';
 +
 +
echo "<h2>Ahora vamos a incluir un fichero con include_once</h2>";
 +
include_once 'ficheros/fichero_include_once.php';
 +
 +
echo "<h2>Ahora vamos a incluir un fichero con require_once</h2>";
 +
require_once 'ficheros/fichero_require_once.php';
 +
 +
echo "<h2>Ahora vamos a incluir un fichero que no existe  con include</h2>";
 +
include 'ficheros/fichero_no_existe_include.php';
 +
echo "Vemos que no pasa nada, por que el fichero no existe pero sigue <hr />";
 +
 +
echo "<h2>Ahora volvemos  a incluir un fichero con include_once</h2>";
 +
include_once 'ficheros/fichero_include_once.php';
 +
echo "Vemos que no pasa nada, por que el fichero ya se había incluido y no se vuelve a incluir<hr />";
 +
 +
echo "<h2>Ahora volvemos  a incluir un fichero con require_once</h2>";
 +
require_once 'ficheros/fichero_require_once.php';
 +
echo "Vemos que no pasa nada, por que el fichero ya se había incluido y no se vuelve a incluir<hr />";
 +
 +
echo "<h2>Ahora vamos a incluir un fichero con include para ver que sí que se vuelve a incluir</h2>";
 +
include 'ficheros/fichero_include.php';
 +
 +
echo "<h2>Ahora vamos a incluir un fichero con require y vemos que sí se vuelve a incluir</h2>";
 +
require 'ficheros/fichero_require.php';
 +
 +
echo "<h2>Ahora no incluimos con require un fichero que no existe</h2>";
 +
require 'ficheros/fichero_no_existe_require.php';
 +
echo "Esta línea ya no se imprimirá ni nada que vaya después de aquí";
 +
?>
 +
</source>
 +
</div>
 +
<div class="slide">
 +
{{Tip|
 +
*Siéntete cómoda en modificar el fichero y ver el resultado
 +
*Observa que estas instrucciones no son exactamente funciones, por lo que no necesitan paréntesis (aunque se puede poner por mantener una homogeneidad con sintaxis del uso o invocación de funciones)
 +
<source lang=php>
 +
include 'ficheros/fichero_include.php'
 +
//Es léxicamente y sintácticamente igual que
 +
include ('ficheros/fichero_include.php');
 +
 +
</source>
 +
}}
 +
}}
 +
</div>
 +
 +
 +
 +
<div class="slide">
 +
{{MRM_Recursos de la Web|
 +
*[http://php.net/manual/es/ php] página oficial en español LO MEJOR!!!!
 +
*http://php.net/manual/es/
 +
*<!-- MRM incluir en el otro documento http://php.net/manual/es/ini.core.php -->
 +
 +
}}
 +
</div>
 +
 +
<div class=slide>

Última revisión de 18:32 20 sep 2018



Introducción a PHP



Icon objectives.jpg
Sección de introducción a PHP
  • En esta sección veremos qué es el lenguaje php y para qué sirve.

Qué es php

  • PHP (acrónimo de PHP: Hypertext Preprocessor)
  • Es un lenguaje de código abierto.
  • Muy popular (Podríamos pensar en un estándar?)
  • Gran comunidad con soporte en internet que aporta, colabora y soluciona dudas.
  • Para el desarrollo web.
  • Nueva versión 7 con grandes cambios en el motor.
  • Se usa mucho la versión 5.9
  • Actualmente está la versión 7.2.9 (16 Aug 2018).


Icon inter.gif
Caracterísitcas de php 7

http://php.net/manual/es/migration70.php


  • Principales cambios en el motor de ejecución (Mucho mas potente).
  • Muy pocas imcompatibilidades.
  • Permite tipados explícitos.
características de php
Icon present.gif
Tip:
  • En las aplicaciones de desarrollo web
  1. Se ejecuta en el servidor web
  2. Es incrustado en HTML.
  3. El cliente solo ve el resultado de la ejecución nunca el código


Obtención del lenguaje de marcas para mostrar en el cliente

ProcesoPHP.png



Icon key points.gif

Puntos clave

El documento PHP, una vez interpretado correctamente en el servidor, produce generalmente una página HTML que será enviada al cliente.


El servidor en acción



Icon key points.gif

Puntos clave

El código PHP está embebido en documentos HTML,
Esto permite introducir dinamismo fácilmente a un sitio web.


El servidor en acción


Icon key points.gif

Puntos clave

El intérprete PHP ignora el texto
Busca etiquetas de inicio del bloque de código PHP.
  • Interpreta las instrucciones hasta el final de etiqueta
  • Repite el proceso hasta el final del fichero
  • Reescribe el fichero entero sustituyendo el código php por la salida de texto que genera
  • Dicho fichero se le entrega al cliente


Restricciones del servidor con php

  • Como PHP se ejecuta del lado del servidor sólo puede tener acceso a los datos del propio servidor.


Icon activity.jpg
Restricciones de php
    • No puede acceder a los recursos del cliente
    • No puede saber qué hora es en el cliente
    • No puede acceder a los archivos del cliente
      • Salvo la excepción de las Cookies



Configuraciones

  • PHP se puede instalar:
  1. Servicio independiente (PHP-FPM (FastCGI Process Manager)).
  2. Como un módulo de apache, php-mod.

Cómo escribir PHP

  • Dentro de páginas html
<?php
   instrucciones
?>
  • Nosotros siempre usaremos este estilo para escribir código
  • Lo podemos embeber en código html .... o no.
Otros modos menos usados
Estilo asp
<%
   instrucciones
%>
  • Para ello hemos de tener habilitado la etiqueta de php.ini
asp_tags 1
Estilo corto
<?
   instrucciones
?>
  • Para ello hemos de tener habilitado la etiqueta de php.ini
short_open_tag 1
Sintaxis para editores HTML
<SCRIPT LANGAGE="PHP">
   instrucciones
</SCRIPT>
Icon present.gif
Tip:
  • En la versión 7.0.0 de php se elimina las etiquetas siguientes:
  1. <%, %> (formato ASP)
  2. #<%= (formato corto)
  3. y la etiqueta de script <script language=""


  • Guardamos el fichero con extensión .php
    • Así sabemos que el interprete php tiene que ejecutar código


Icon activity.jpg
Probando primer programa
Icon present.gif
Tip: existen una función llamada phpinfo()


  • Vamos a probarla y ver la información que genera



  • Haz un programa que en php que ejecute la función phpinfo()



Icon activity.jpg
Probando la extensión
Verifica qué ocurre si la extensión del fichero no es php.
  • Concluye el motivo.



Programa: conjunto de instrucciones

Icon objectives.jpg
Objetivo

Un programa es un conjunto de instrucciones

  • Analizaremos las instrucciones que hay.
  • Posteriormente Veremos cómo se escriben en php.

Planteando un lenguaje de programación

Léxicos
  • Son las palabras reservadas del lenguaje.
http://php.net/manual/es/reserved.keywords.php
Sintaxis
Reglas de construcción.
Son las ya conocidas, pero veremos cómo se construyen las expresiones.
Semántica
Habla del significado.


Icon key points.gif

Puntos clave

Estudiaremos alguna peculiaridad, como el hecho de que php es un lenguaje altamente orientado a expresiones


Instrucciones en un lenguaje de programación

  1. Inicio Fin de bloque
  2. Instrucción/función de leer del teclado, escribir por pantalla
  3. Declaraciones (variables, constantes, funciones, clases, objetos, ...)
  4. Asignación
  5. Invocación (llamada a función o método)
  6. Estructura de control (selectiva, iterativa)


Instrucción de inicio fin de bloque
 { //Instrucción de inicio de bloque
 } //Instrucción de fin de bloque



Icon key points.gif

PHP instrucción inicio fin

En PHP el bloque inicio y fin está especificado con los caracteres
  { //inicio de bloque
  } //fin de bloque


inicio del programa se especifica con las etiquetas
 <?php //Etiqueta de inicio de script
 
 ?>  //Etiqueta de fin de script

}}

Separando instrucciones
  • ; (punto y coma)
  • Su uso es obligatorio.
  • En la última instrucción se puede obviar (excepción).
    • ?> implica esta instrucción.
  • La instrucción inicio de bloque y fin de bloque no lleva nunca ;
Icon present.gif
Tip: Si sólo queremos insertar 1 instrucción puede ser interesante obviar el ;.
  <html>
    ......
    <?php echo "hola" ?>
    <!-- instrucciones html -->
    <?php echo "otro hola" ?>
    <!-- mas instrucciones html -->
    <?php echo "otra instrucción " ?>
    .....
  </html>


Poniendo ;
Icon present.gif
Tip: También puede haber ;
  <html>
    ......
    <?php echo "hola" ;?>
    <!-- instrucciones html -->
    <?php echo "otro hola" ; ?>
    <!-- mas instrucciones html -->
    <?php echo "otra instrucción " ; ?>
    .....
  </html>




Icon activity.jpg
Probando código php
Haz un programa que dónde incluyas código dentro del body.
Muestra con etiqueta h1, h2 y h3 tres frases.
Utiliza la función echo para visualizar.
Muestra en el título un texto escrito desde php.
Compara el fichero del servidor con el que recibe el cliente.



}}

Esto es lo que ve el cliente
</body>
</html>
<!doctype html>
 
<html lang="en">
 <head>
    <meta charset="UTF-8">
    <title>
      Este es un título desde php 
   </title>
 </head>
 <body>
    <h1>Mensaje en texto de h1</h1>
    <h2>Mensaje en texto de h2</h2>
    <h3>Mensaje en texto de h3</h3>
 </body>
</html>

1.png


Funciones de salida

  • Construcciones básicas para salida de caracteres
  • En PHP,en realidad no son funciones por lo que pueden ir sin paréntesis (con o sin paréntesis):
  1. echo
  2. print
  • Existen otras funciones que iremos viendo según avance el curso
printf, var_dump, print_r, ....

echo

  • Es el uso más sencillo
  • Imprime una cadena como argumentos
  • En la versión sin paréntesis , también puedes pasar una lista de argumentos.
<?php
*echo “primer argumento”, “segundo argumento”, “tercer argumento”
?>

print

  • Esta sentencia es igual en uso y funcionalidad que echo
  • Tiene dos diferencias con echo
  1. Sólo puede aceptar un argumento
  2. Devuelve un valor booleano que representa si la sentencia ha tenido exito o no
Icon qmark.gif
Observa el siguiente código e indica si es o no correcto
  •  echo 'hola caracola', 'hola','como estás';
    • Correcto
      • Cierto, echo admite una lista de parámetros
    • Incorrecto
      • Revisa bien tu respuesta
  •  print 'hola caracola', 'hola','como estás';
    • Correcto
      • Revisa bien tu respuesta
    • Incorrecto
      • Cierto, print no permite un listado de parámetros




Comentarios

  • Son ignorados por el intérprete
  • No generan instrucciones
  • Se consideran parte del software
  • En php tengo 4 formas de hacer comentarios
<?php
 /*
 Este código no hace nada pero muestra
 la sintaxis de los comentarios
 como este que ocupa varias líneas tipo lenguaje C o Java
 */
 $miVariable= 8;// Esta parte de la línea se ignorará 
 $miVariable+= 8;# y esta parte de línea tambien
 echo "Valor de la variable $miVariable";
//Este es otro comentario de una sola línea
#Este es otro modo de hacer comentarios tipo script de linux
/**
Este comentario permite insertar información
Para que luego php Documentor genere una página web
Con la información de mi código
*/
  • Este código nos visualizará lo siguiente
 Valor de la variable 16

El resto del código será ignorado

  • Es bueno escribir al principio del script
<?php
/**
 * User: Nombre y apellidos
 * Date: 19/10/17
 * Version: 17:40
 */
  • Aquí tienes la referencia para ver las diferentes directivas para generar código
  • Más adelante en el curso las veremos.


Icon inter.gif
Recursos de la Web



Icon activity.jpg
probando comentarios
  • Escribe la siguiente función anterior en un fichero php
function miFuncion($num1, $num2){
    if ($num1>$num2)
        return $num1;
    else
        return $num2;



Ahora justo en la línea de encima de función escribe

/**
  • y luego presiona intro
  • Te debería de quedar
/**
 * 
 * @param type $num1
 * @param type $num2
 * @return type 
 */
function miFuncion($num1, $num2){
    if ($num1>$num2)
        return $num1;
    else
        return $num2;

Dónde poner el código embebido




Icon qmark.gif
Pregunta
Dónde escribir código php

  • Donde queramos que se ejecute algo

CodigoPHP.png
  • Se ejecuta como si fuera un solo programa
  • A la hora de incluir php podemos se usa mucho la filosofía Modelo Vista /Controlador que veremos en otro tema


Icon summary.gif
Modelo vista controlador
  • Trata de separar el código según su cometido, de forma muy resumida
  • Hay acciones que realizan cálculos y obtienen resultados (Controlador
  • Hay acciones que lo que hacen es visualziar valores (Vista)
  • Hay acciones que se encargan de interactuar con la base de datos (Modelo)



Icon key points.gif

Empecemos aplicar el modelo vista controlador

  • Podemos llevar este criterio desde el principio siguiente el esquema siguiente




Icon casestudy.gif
Programa para ver si un número es o no par

No te preocupes si no entiendes el código, lo iremos viendo

<?php
 
//-----------CONTROLADOR-----------------------------
//Instrucciones que realizan cálculos
//Guardo el resultado que quiero mostrar en variables
$a = rand(1, 100); //Genero un número aleatorio
$fecha = date("d m Y", time()); //Obtenemos la fecha
$title = "Hoy, $fecha, veremos si '$a' es par o impar "; //Creo un título
if ($a % 2 == 0) //Si el número es par
    $msj = "El número $a es par";
else
    $msj = "El número $a es impar";
?>
 
<!-- Ahora metemos el código php cuando lo necesitemos-->
<!------------------- VISTA (solo la parte php)----------------------->
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>probando php</title>
    </head>
    <body>
        <h1> <?php echo $title ?></h1>
        <hr  />
        <h3> <?php echo $msj ?></h3>
 
    </body>
</html>






Escribir PHP con directivas de inclusión

  • Podemos escribir el código php escribiéndolo en un fichero aparte y luego lo incluimos.
    • Incluimos el fichero explícitamente
    • Para ello usamos directivas o instrucciones del tipo include
  include('ruta/nobrefichero');
  require('ruta/nobrefichero');
  include_once('ruta/nombrefichero');
  require_once('ruta/nombrefichero');
Ambas son palabras reservadas del lenguaje y sirven para incluir el contenido de un fichero con sentencias php en esa posición del código.


Icon key points.gif

Include Vs Require

  • Ambas incluyen el contenido de un fichero php en esa posición
    • Con include si no se encuentra se continúa ejecutando en esa posición
    • Con require si no está el fichero se detiene en ese punto la ejecución del script


Icon key points.gif

include/require Vs include_once/require_once

  • Ambas incluyen el contenido de un fichero php en esa posición
    • include/require siempre buscan e incluyen el fichero en esa posición
    • include_once/require_once antes de incluirlo mira a ver si ya lo incluyó previamente en cuyo caso ya no lo hace


Icon activity.jpg
Probando include require
{{{1}}}




Icon inter.gif
Recursos de la Web