Diferencia entre revisiones de «Usuario:ManuelRomero/ProgramacionWeb/Distancia2018/Sintaxis/1»

De WikiEducator
Saltar a: navegación, buscar
 
(14 revisiones intermedias por el mismo usuario no mostrado)
Línea 12: Línea 12:
 
__TOC__
 
__TOC__
 
<div id=apuntes_distancia>
 
<div id=apuntes_distancia>
<div class="slide">
 
;Separando instrucciones
 
*Para separar una instrucción de otra usaremos ''''';''''' (punto y coma)
 
*Su uso es obligatorio a excepción de la última instrucción que se puede obviar
 
*Esto es por que el fin de código php '''''?>''''' implica esta instrucción
 
*Nosotros mejor lo usaremos siempre.
 
*La instrucción inicio de bloque y fin de bloque no lleva nunca ''''';'''''
 
</div>
 
  
 
<div class="slide">
 
<div class="slide">
{{MRM_Resumen|Title=El ;|Si solo queremos insertar una instrucción puede suele obviarse 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">
 
{{MRM_Resumen|Title=El ;|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
 
{{Plegable|hide|Posible solución|
 
<source lang=html5>
 
</body>
 
</html>
 
<!doctype html>
 
<html lang="en">
 
<head>
 
    <meta charset="UTF-8">
 
    <meta name="viewport"
 
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
 
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
 
    <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>
 
 
}}
 
[[Image:1.png]]
 
}}
 
</div>
 
<div class='slide'>
 
===Comentarios ===
 
*Son ignorados por el intérprete, no generan instrucciones, pero se consideran parte del software
 
*En php tengo 4 formas de hacer comentarios
 
<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 phpDocumentor genere una página web
 
Con la información de mi código
 
*/
 
?>
 
</source>
 
*Así como comentar las funciones como veremos
 
*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">
 
{{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>
 
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
 
<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 class='slide'>
 
 
===Dónde poner el código embebido===
 
===Dónde poner el código embebido===
 
<br/>
 
<br/>
{{MRM_Pregunta|Dónde escribir código php|{{feedback|Dónde queramos que se ejecute algo}} }}
+
{{MRM_Pregunta|Dónde escribir código php
 +
{{MRM_Pregunta|Title=Respuesta|Dónde queramos que se ejecute algo}}  
 +
}}
 
</div>
 
</div>
 
 
<div class="slide">
 
<div class="slide">
 
<hr  />
 
<hr  />
 
*Donde queramos que se ejecute algo
 
*Donde queramos que se ejecute algo
 
<hr/>
 
<hr/>
[[Imagen:codigoPHP.png|center|700px]]
+
[[Imagen:codigoPHP.png|center|500px]]
 
*Se ejecuta como si fuera un solo programa
 
*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
 
*A la hora de incluir php podemos se usa mucho la filosofía Modelo Vista /Controlador que veremos en otro tema
Línea 193: Línea 34:
 
*Hay acciones que se encargan de interactuar con la base de datos (Modelo)
 
*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">
 
{{MRM_Actividad|Title=Practica|
 
*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">
 
<!--4---------------------------------->
 
;Sensitive case?
 
*El lenguaje es sensible a mayúsculas y minúsculas en los siguientes casos:
 
**En los identificadores de variables
 
<source lang=php>
 
$edad =10;
 
$Edad =20;
 
$edad y $Edad son 2 variables diferentes
 
</source>
 
**En los nombres de funciones
 
<source lang=php>
 
function  $calculaEdad($anyo){
 
...
 
}
 
function $CalculaEdad($anyo){
 
...
 
}
 
//Son dos funciones diferentes
 
</source>
 
*El lenguaje '''''NO''''' es sensible a mayúsculas y minúsculas en:
 
**las palabras reservadas (if o If o IF o iF,...)
 
<source lang=php>
 
If () {
 
//..
 
}
 
IF () {
 
//..
 
}
 
if () {
 
//..
 
}
 
iF () {
 
//..
 
}
 
//Todas las construcciones if son correctas
 
</source>
 
</div>
 
 
 
<div class=slide>
 
==Funciones propias de php sobre tipos y valores==
 
http://php.net/manual/es/ref.var.php
 
*Existen una serie (muchas) de funciones que son interesantes de conocer
 
*Estas funciones ya están creadas y se pueden usar directamente
 
*Están relacionadas con los tipos de datos y valores
 
*Alguna de ellas son extremadamente útiles y utilizadas, por ejemplo antes de procesar un dato, hay que ver que dicho dato tenga valor.
 
*A continuación trataremos alguna de ellas
 
</div>
 
 
<div class="slide">
 
;[http://es1.php.net/manual/es/function.var-dump.php var_dump]
 
<source lang=php>
 
void var_dump($expresion)
 
</source>
 
*Nos da información sobre la estructura de un valor resultado de una expresion
 
</div>
 
 
<div class="slide">
 
;[http://es1.php.net/manual/es/function.isset.php isset]
 
<source lang=php>
 
bool isset ( $variable )
 
</source>
 
*verifica que una variable tiene valor (está definida y no tiene un valor null)
 
<source lang=php>
 
<?php
 
$VariableValor= 5;
 
print ("El valor de la variable es $VariableValor");
 
print ("El valor de otra variable es $OtraVariableValor");
 
if (isset($VariableValor))
 
    print ("VariableValor tiene valor asignado");
 
else
 
    print ("VariableValor no no tiene valor asignado");
 
if (isset($OtraVariableValor))
 
    print ("OtraVariableValor tiene valor asignado");
 
else
 
    print ("OtraVariableValor no no tiene valor asignado");
 
  ?>
 
</source>
 
</div>
 
<div class="slide">
 
 
===Funciones para determinar existencia de variables===
 
Tenemos tres funciones muy parecidas pero no del todo iguales
 
 
{|class="wikitable" width="60%"
 
!Función
 
!Significado
 
|-
 
|'''is_null($variable)'''
 
|Determina si una variable ($variable) tiene valor null
 
|-
 
|'''empty($variable)'''
 
|Determina si una variable ($variables)está vacía
 
|-
 
|'''isset($variable)'''
 
|Determina is una variable ha sido definida y no tiene un valor vacío.
 
|}
 
 
*Es importante saber qué es para php un valor nulo, o si está vacía que no son conceptos sinónimos
 
;Valor null:
 
<source lang=php>
 
$a=null //$a tiene valor null.
 
is_null($a) //true
 
unset($a) //Se destruye la variable y toma el valor null
 
is_null($a) //true
 
//$b una variable que no existe tiene el valor null
 
is_null($b) //true
 
</source>
 
;Variable vacía
 
<source lang=php>
 
$a=null //$a está vacía
 
empty($a) //true
 
$a="";
 
empty($a) //true
 
$a="hola";
 
empty($a) //false
 
unset($a);
 
empty($a) //true
 
$a=false;
 
empty($a) //true !OJO!
 
$a=0;
 
empty($a) //true !OJO!
 
 
</source>
 
*Puedes ver la siguiente app en la que puedes aportar valores
 
http://manuel.infenlaces.com/apuntes/existencia_valor_variables
 
*Tener en cuenta que si evaluamos si una variable está vacía no es
 
</div>
 
<div class="slide">
 
;[http://es1.php.net/manual/es/function.empty.php empty]
 
<source lang=php>
 
bool empty ($varriable)
 
</source>
 
*Determina si una variable no existe. Devuelve true si no existe o su valor está vacío
 
</div>
 
 
<div class="slide">
 
{{MRM_Actividad|
 
Probamos las fuciones var_dump() que nos da información sobre el valor y el tipo}}
 
</div>
 
 
<div class="slide">
 
{{MRM_Actividad|
 
Usando la función xxxyyy donde xxx e yyy será dec oct bin o hex para convertir el valor de un sistema numérico a otro}}
 
</div>
 
 
<div class="slide">
 
{{MRM_Actividad|
 
*Define las siguientes variables que se especifican en el código siguiente y verifica el resultado con empty()
 
 
<source lang=php>
 
$num=0;
 
$nombre="";
 
$nombre=null;
 
$nombre="0";
 
$pregunta = FALSE;
 
</source>
 
}}
 
</div>
 
 
<div class="slide">
 
;[http://es1.php.net/manual/es/function.gettype.php gettype]]
 
*Devuelve el tipo de una variable
 
<source lang=php>
 
string gettype($variable)
 
</source>
 
</div>
 
 
<div class="slide">
 
;[http://es1.php.net/manual/es/function.is-bool.phpis_bool][http://es1.php.net/manual/es/function.is-double.php is-double] [http://es1.php.net/manual/es/function.is-int.php is-int], is-xxx
 
*son funciones donde xxx especificado en el último nombre, puede ser cualquiera de los tipos
 
[[Archivo:funciones_is-xxx.png]]
 
</div>
 
 
<div class="slide">
 
*Todas ellas devuelve un booleano que indica si la variable, valor o expresion es o no de ese tipo,
 
<source lang=php>
 
string is_int($variable);
 
string is_double($variable);
 
string is_bool($variable);
 
string is_integer($variable);
 
string is_null($variable);
 
string is_string($variable);
 
...
 
</source>
 
</div>
 
 
<div class="slide">
 
{{MRM_Actividad|
 
Visualizar de qué tipo es la expresión mostrada en el código siguiente y visualiza el valor de la expresión}}
 
<source lang=php>
 
  $a=5;
 
</source>
 
</div>
 
 
<div class="slide">
 
;[http://php.net/manual/es/function.unset.php unset]
 
*Destruye la variable especificada perdiéndose su valor
 
<source lang=php>
 
void unset ($var);
 
</source>
 
</div>
 
 
</div>
 
</div>

Última revisión de 09:26 22 oct 2018



DWES TituloTema3.gif


Dónde poner el código embebido




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



Icon qmark.gif
Respuesta
Dónde queramos que se ejecute algo



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