- 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 ;
El ;
Si solo queremos insertar una instrucción puede suele obviarse el ;
<html>
......
<?php echo "hola" ?>
<!-- instrucciones html -->
<?php echo "otro hola" ?>
<!-- mas instrucciones html -->
<?php echo "otra instrucción " ?>
.....
</html>
|
El ;
También puede haber ;
<html>
......
<?php echo "hola" ;?>
<!-- instrucciones html -->
<?php echo "otro hola" ; ?>
<!-- mas instrucciones html -->
<?php echo "otra instrucción " ; ?>
.....
</html>
|
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
Posible solución |
---|
</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>
|
|
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
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.
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
Pregunta
Dónde escribir código php
Respuesta
Dónde queramos que se ejecute algo
|
|
- Donde queramos que se ejecute algo
- 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
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)
|
Empecemos aplicar el modelo vista controlador
- Podemos llevar este criterio desde el principio siguiente el esquema siguiente
- Esqueleto MVC
<!-- 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>
?>
|
|
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.
- 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
|
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
|
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í";
?>
|
Práctica
- 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');
|
- 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
- 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
- Determina si una variable no existe. Devuelve true si no existe o su valor está vacío
Actividad
Probamos las fuciones var_dump() que nos da información sobre el valor y el tipo
|
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
|
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
- 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);
...
Actividad
Visualizar de qué tipo es la expresión mostrada en el código siguiente y visualiza el valor de la expresión
|
- unset
- Destruye la variable especificada perdiéndose su valor
void unset ($var)
Funciones de fechas
- En php hay muchas fucniones para gestionar fechas, siendo esta una tarea frecuente el las aplicaciones web.
- Vam os a estudiar 4 funciones siendo dos de ellas muy utilizadas
- En php se trabaja mucho con las fechas. Para tal cometido existe una clase llamada DateTime y DateTimeInterface (https://www.php.net/manual/es/class.datetime.php), pero muchas de sus acciones se pueden hacer de forma imperativa con funciones que vamos a ver.
time()
Obtiene una marca de tiempo
https://www.php.net/manual/es/function.time.php
- Esta es una función muy importante en php que conviene entender bien.
- Me retorna el número de segundos transcurridos desde el 1 de Enero de 1970 00:00:00 GMT.
Esta fecha está relacionada con el sistema operativo UNIX que empezó a hacerse visible a partir del año 1970
- La función time retorna un entero largo numérico
usar time()
- Prueba a visualizar el retorno de la función time()
- Mira lo que ocurre si recargas la página en ejecución, como se van actualizando los segundos
Pregunta
- Entiendes por qué camba el valor
|
Porbando time() |
---|
Segundos transcurridos desde 1 de enero de 1970 <span style='color:red'>$tiempo </span></h2>";
?>
|
|
date()
- La función convierte un timestamp en una fecha como cadena de caracteres con el formato que le especifiquemos
- Para ver los metaracteres que representan el formato puedes ver la referencia web de la función
Esta función admite dos parámetros, uno de ellos es obligatoria
{{MRM_Actividad|Title=funcion date()|
data("formato_fecha", "timestamp")
- parámetro 1
- formato_fecha
Es un string formado por metacaracteres y caracteres literales que establece el formato en el cual queremos ver la fecha (d/m/y H:i:s), por ejemplo, donde d representa el número de día, m del mes ... y los caracteres / y : apareceran literales en la cadena
- parametro 2
- timestamp
Es una fecha en formato timestamp o entero largo como segundos desde una fecha
Si no se establece, se toma el instante actual, es decir el resultado de la función time()
Plantilla:MRM Activdad
=====strtotime=====
Convierte un string a fecha. https://www.php.net/manual/es/function.strtotime.php
- Esta función admite dos parámetros, uno de ellos es obligatoria
funcion strtotime
strtotime("fecha_como_string", "timestamp")
- parámetro 1
- fecha_como_string
Es una cadena que representa una fecha
Debemos facilitarla con el formato que entienda el sistema
Por defecto "mes/dia/year"
- parametro 2
- timestamp
Es una fecha en formato timestamp o entero largo como segundos desde una fecha
Tip: Recuerda que stamptime es un entero largo que respresenta un número de segundos desde el 1 de enero de 1970
|
Plantilla:MRM Activdad
strftime()
https://www.php.net/manual/es/function.strftime.php
Da formato a una fecha según el idioma establecido
- setlocale()
https://www.php.net/manual/es/function.setlocale.php
Establece un idioma para la fecha, monedas,...
- date()
convierte una marca de tiempo a string