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

De WikiEducator
Saltar a: navegación, buscar
Línea 12: Línea 12:
 
__TOC__
 
__TOC__
 
<div id=apuntes_distancia>
 
<div id=apuntes_distancia>
 
+
<div class="slide">
<div class="slide">
+
;Separando instrucciones
==Operadores y expresiones==
+
*Para separar una instrucción de otra usaremos ''''';''''' (punto y coma)
<br />
+
*Su uso es obligatorio a excepción de la última instrucción que se puede obviar
{{MRM_Objetivos|
+
*Esto es por que el fin de código php '''''?>''''' implica esta instrucción
;Son partes de las frases de un lenguaje de programación}}
+
*Nosotros mejor lo usaremos siempre.
 +
*La instrucción inicio de bloque y fin de bloque no lleva nunca ''''';'''''
 
</div>
 
</div>
  
 
<div class="slide">
 
<div class="slide">
===Operadores===
+
{{MRM_Resumen|Title=El ;||Si solo queremos insertar una instrucción puede suele obviarse el ''''';'''''
*Son símbolos que realizan acciones sobre operandos y dan como resultado un valor
+
<source lang=php>
*Tenemos diferentes tipos de operadores en función del tipo de operandos y del resultado
+
  <html>
;operadores aritméticos (+,-,*,/,%,**, ++, --)
+
    ......
*Retorna un valor numérico
+
    <?php echo "hola" ?>
*el ++, -- son valores de autoincremeto y autodecremento, pueder ser pre o post
+
    <!-- instrucciones html -->
 +
    <?php echo "otro hola" ?>
 +
    <!-- mas instrucciones html -->
 +
    <?php echo "otra instrucción " ?>
 +
    .....
 +
  </html>
 +
</source>
 +
}}
 
</div>
 
</div>
  
 
<div class="slide">
 
<div class="slide">
;Operadores
+
{{MRM_Resumen|Title=El ;|También puede haber ;
 
<source lang=php>
 
<source lang=php>
$a=5;
+
  <html>
if ($a++==5)
+
     ......
     echo '$a que vale '.$a.' dice que vale 5 ???? <br>'
+
    <?php echo "hola" ;?>
        . 'Esto es por que primero compara y luego incrementa<br>';
+
    <!-- instrucciones html -->
 +
    <?php echo "otro hola" ; ?>
 +
    <!-- mas instrucciones html -->
 +
    <?php echo "otra instrucción " ; ?>
 +
    .....
 +
  </html>
 +
</source>
 +
}}
 +
</div>
 +
<div class="slide">
  
echo 'ahora $a vale '.$a.'<br>';
+
{{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
  
if (++$a==6)
+
echo "<h1>Mensaje en texto de h1</h1>";
    echo 'esto nunca saldrá ya que $a se incrementa antes de comparar';
+
echo "<h2>Mensaje en texto de h2</h2>";
else
+
echo "<h3>Mensaje en texto de h3</h3>";
    echo 'efectivamente ahora $a ya no vale 6 sino '.$a.'<br>';
+
 
?>
 
?>
 +
 +
 +
</body>
 +
</html>
 
</source>
 
</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>
  
<div class="slide">
+
<div class='slide'>
;Operadores
+
*Es bueno escribir al principio del script
*El código anterior genera la siguiente salida
+
 
<source lang=php>
 
<source lang=php>
$a que vale 6 dice que vale 5 ????  
+
<?php
  Esto es por que primero compara y luego incrementa
+
/**
  ahora $a vale 6
+
  * User: Nombre y apellidos
  efectivamente ahora $a ya no vale 6 sino 7
+
  * Date: 19/10/17
 +
  * Version: 17:40
 +
*/
 +
?>
 
</source>
 
</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>
  
 
<div class="slide">
 
<div class="slide">
;operadores comparación (==,<,>,>=,<=,<>,!=,===,!==)
+
{{MRM_Actividad|Title=probando comentarios |
:Este tipo de operadores genera un booleano como resultado de evaluar la expresión
+
*Escribe la  siguiente función anterior en un fichero php
{{MRM_Puntos clave|
+
 
*'''''<nowiki>==</nowiki>''''' operador de comparación '''''igual que''''' (mismo valor)
+
<source lang=php>
*'''''<nowiki>===</nowiki>''''' operador de comparación '''''exactamente igual que''''' (mismo valor y tipo)
+
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===
 +
<br/>
 +
{{MRM_Pregunta|Dónde escribir código php|{{feedback|Dónde queramos que se ejecute algo}} }}
 
</div>
 
</div>
  
 
<div class="slide">
 
<div class="slide">
;Operador == Vs ===
+
<hr  />
 +
*Donde queramos que se ejecute algo
 +
<hr/>
 +
[[Imagen:codigoPHP.png|center|700px]]
 +
*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>
 
<source lang=php>
$num=1;
+
<?php
if ($num==true)
+
 
    echo '$num es igual a true<br>';
+
//-----------CONTROLADOR-----------------------------
if ($num===true){
+
//Instrucciones que realizan cálculos
     echo "esto nunca se ejecutará";
+
//Guardo el resultado que quiero mostrar en variables
}else
+
$a = rand(1, 100); //Genero un número aleatorio
     echo '$num no es exactamente igual a true';
+
$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>
 
</source>
 +
 +
 +
}}
 +
 
</div>
 
</div>
  
 
<div class="slide">
 
<div class="slide">
;Operador == vs ===
 
  
*El código anterior generaría la siguiente salida
+
===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>
 
<source lang=php>
$num es igual a true
+
  include('ruta/nobrefichero');
$num no es exactamente igual a true
+
  require('ruta/nobrefichero');
 +
  include_once('ruta/nombrefichero');
 +
  require_once('ruta/nombrefichero');
 
</source>
 
</source>
*Ver la sección '''''comparación de tipos''''' de la página oficial
 
http://php.net/manual/es/language.operators.comparison.php
 
 
</div>
 
</div>
  
 
<div class="slide">
 
<div class="slide">
;operadores de concatenacón( .) concatena cadena de caracteres.
+
;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.
:El operador + no está sobre cargado, observa el siguiente 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>
 
<source lang=php>
$nombre="Maria";
+
<?php
$apellido = " de la Oh";
+
  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
  
$nombreCompleto = $nombre.$apellido;
+
echo "<h2>Ahora vamos a incluir un fichero con include</h2>";
echo "el valor de nombre completo es $nombreCompleto ---<br>";
+
include 'ficheros/fichero_include.php';
  
$nombreCompleto = $nombre+$apellido;
+
echo "<h2>ahora vamos a incluir un fichero con require</h2>";
echo "el valor de nombre completo es $nombreCompleto --<br>";
+
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>
 
</source>
 +
}}
 
</div>
 
</div>
 
 
<div class="slide">
 
<div class="slide">
;La salida del código anterior sería
+
{{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>
 
<source lang=php>
el valor de nombre completo es Maria de la Oh ---
+
include 'ficheros/fichero_include.php'
el valor de nombre completo es 0 --
+
//Es léxicamente y sintácticamente igual que
 +
include ('ficheros/fichero_include.php');
 +
 
 
</source>
 
</source>
 +
}}
 +
}}
 
</div>
 
</div>
 +
 +
  
 
<div class="slide">
 
<div class="slide">
;Operadores de asignación (= , =>)
+
{{MRM_Recursos de la Web|
:Se pueden combinar con los aritméticos (+=, *=, ...)  y con los de concatenación (.=)
+
*[http://php.net/manual/es/ php] página oficial en español LO MEJOR!!!!
:En este caso el valor de la variable de la izquierda se toma como primero operando
+
*http://php.net/manual/es/
;Operador de asignación
+
*<!-- 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>
 
<source lang=php>
<?php
+
$edad =10;
$b=1;
+
$Edad =20;
for ($a=0;$a<10;$a++){
+
$edad y $Edad son 2 variables diferentes
    $b*=10;
+
</source>
    echo 'valor de $b ='.$b.'<br>';
+
**En los nombres de funciones
 +
<source lang=php>
 +
function  $calculaEdad($anyo){
 +
...
 
}
 
}
?>
+
function $CalculaEdad($anyo){
 +
...
 +
}
 +
//Son dos funciones diferentes
 
</source>
 
</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>
  
 
<div class="slide">
 
<div class="slide">
*El código anterior genera la siguiente salida
+
;[http://es1.php.net/manual/es/function.var-dump.php var_dump]
 
<source lang=php>
 
<source lang=php>
valor de $b =10
+
void var_dump($expresion)
valor de $b =100
+
valor de $b =1000
+
valor de $b =10000
+
valor de $b =100000
+
valor de $b =1000000
+
valor de $b =10000000
+
valor de $b =100000000
+
valor de $b =1000000000
+
valor de $b =10000000000
+
 
</source>
 
</source>
 +
*Nos da información sobre la estructura de un valor resultado de una expresion
 
</div>
 
</div>
  
 
<div class="slide">
 
<div class="slide">
;operadores de ejecución (``)
+
;[http://es1.php.net/manual/es/function.isset.php isset]
:PHP proporciona un operador especial que permite ejecutar sentencias
+
<source lang=php>
*Observa el siguiente código
+
bool isset ( $variable )
 +
</source>
 +
*verifica que una variable tiene valor (está definida y no tiene un valor null)
 
<source lang=php>
 
<source lang=php>
 
<?php
 
<?php
$Discos = `df`;
+
$VariableValor= 5;
echo "<pre>$Discos</pre>";
+
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>
 
</source>
 
</div>
 
</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">
 
<div class="slide">
*El código anterior generará la siguiente salida
+
;[http://es1.php.net/manual/es/function.empty.php empty]
 
<source lang=php>
 
<source lang=php>
Filesystem    1K-blocks    Used Available Use% Mounted on
+
bool empty ($varriable)
/dev/sda5      86378608  6072360  75895384  8% /
+
none                  4        0        4  0% /sys/fs/cgroup
+
udev            4023720        4  4023716  1% /dev
+
tmpfs            806904    1384    805520  1% /run
+
none                5120        0      5120  0% /run/lock
+
none            4034504    6588  4027916  1% /run/shm
+
none              102400      28    102372  1% /run/user
+
/dev/sda7      101797224 40480360  56122728  42% /home
+
 
</source>
 
</source>
 +
*Determina si una variable no existe. Devuelve true si no existe o su valor está vacío
 
</div>
 
</div>
  
 
<div class="slide">
 
<div class="slide">
;Invocando funciones del sistema
+
{{MRM_Actividad|
*El operador anterior (comillas invertidas) es igual que la función '''''shell_exec()'''''
+
Probamos las fuciones var_dump() que nos da información sobre el valor y el tipo}}
http://php.net/manual/es/function.shell-exec.php
+
 
</div>
 
</div>
  
 
<div class="slide">
 
<div class="slide">
;operadores lógicos (and,&&, or, ||, xor !)
+
{{MRM_Actividad|
http://php.net/manual/es/language.operators.logical.php
+
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}}
:Funcionan por cortocircuito
+
:El operador  '''''xor''''' da verdad si los operando son de diferente valor uno true y el otro false
+
:La notación '''''and''''' y '''''&&''''' representan el mismo operador, igual ocurre con '''''or''''' y '''''||'''''
+
*La diferencia entre los operadores es la prioridad
+
http://php.net/manual/es/language.operators.precedence.php
+
 
</div>
 
</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
 +
void unset ($var)
 +
</div>
 
</div>
 
</div>

Revisión de 08:10 22 oct 2018



DWES TituloTema3.gif


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 ;


Icon summary.gif
El ;



Icon summary.gif
El ;
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

1.png



Comentarios

  • Son ignorados por el intérprete, no generan instrucciones, pero 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 phpDocumentor genere una página web
Con la información de mi código
*/
?>
  • Así como comentar las funciones como veremos
  • 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
Crea 4 ficheros con el siguiente código

fichero_include.php

<?php
  echo "<b><i>Hola desde un fichero include </b></i><hr />";
?>

fichero_include_once.php

<?php
 echo "<b><i>Hola desde un fichero include once </b></i><hr />";
?>

fichero_require.php

<?php
  echo "<b><i>Hola desde un fichero require </b></i><hr />";
?>

fichero_require_once.php

<?php
  echo "<b><i>Hola desde un fichero require once </b></i><hr />";
?>

Ahora crea un programa principal dónde uses las instrucciones de inclusión vistas en este apartado.

<?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í";
?>




Icon activity.jpg
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)
include 'ficheros/fichero_include.php'
//Es léxicamente y sintácticamente igual que
include ('ficheros/fichero_include.php');



}}



Icon inter.gif
Recursos de la Web



Sensitive case?
  • El lenguaje es sensible a mayúsculas y minúsculas en los siguientes casos:
    • En los identificadores de variables
$edad =10;
$Edad =20;
$edad y $Edad son 2 variables diferentes
    • En los nombres de funciones
function  $calculaEdad($anyo){
...
}
function $CalculaEdad($anyo){
...
}
//Son dos funciones diferentes
  • El lenguaje NO es sensible a mayúsculas y minúsculas en:
    • las palabras reservadas (if o If o IF o iF,...)
If () {
 //..
}
IF () {
 //..
}
if () {
 //..
}
iF () {
 //..
}
//Todas las construcciones if son correctas


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
var_dump
 void var_dump($expresion)
  • Nos da información sobre la estructura de un valor resultado de una expresion
isset
 bool isset ( $variable )
  • verifica que una variable tiene valor (está definida y no tiene un valor null)
<?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");
  ?>

Funciones para determinar existencia de variables

Tenemos tres funciones muy parecidas pero no del todo iguales

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
 $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
Variable vacía
 $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!
  • 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
empty
bool empty ($varriable)
  • Determina si una variable no existe. Devuelve true si no existe o su valor está vacío


Icon activity.jpg
Actividad

Probamos las fuciones var_dump() que nos da información sobre el valor y el tipo



Icon activity.jpg
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



Icon activity.jpg
Actividad
  • Define las siguientes variables que se especifican en el código siguiente y verifica el resultado con empty()
 $num=0;
 $nombre="";
 $nombre=null;
 $nombre="0";
 $pregunta = FALSE;



gettype]
  • Devuelve el tipo de una variable
string gettype($variable)
[1]is-double is-int, is-xxx
  • son funciones donde xxx especificado en el último nombre, puede ser cualquiera de los tipos

Funciones is-xxx.png

  • Todas ellas devuelve un booleano que indica si la variable, valor o expresion es o no de ese tipo,
string is_int($variable);
string is_double($variable);
string is_bool($variable);
string is_integer($variable);
string is_null($variable);
string is_string($variable);
...


Icon activity.jpg
Actividad

Visualizar de qué tipo es la expresión mostrada en el código siguiente y visualiza el valor de la expresión


  $a=5;
unset
  • Destruye la variable especificada perdiéndose su valor

void unset ($var)