|
|
Línea 549: |
Línea 549: |
| <div class="slide"> | | <div class="slide"> |
| --> | | --> |
| + | <br /> |
| =====Heredoc===== | | =====Heredoc===== |
| *Este tipo de expresión de string es útil para especificar cadenas largas en multilíneas | | *Este tipo de expresión de string es útil para especificar cadenas largas en multilíneas |
Revisión de 22:04 27 oct 2023
Declaraciones
Objetivo
- Una declaración es una instrucción muy importante
- Aparentemente no hace nada (no tienen acción directa)
- Reserva memoria para el elemento declarado
- Permite hacer luego cosas con los elementos declarados
|
Declaraciones
- Estas instrucciones sirven para declarar elementos dentro del programa que posteriormente vamos a utilizar
- En un programa se pueden declarar:
- variables
- constantes
- subprogramas (funciones, procedimientos. En terminología OO métodos), esto lo veremos mas adelante
- La manera de hacer declaración dependerá del lenguaje de programación utilizado.
Lenguajes de programación en función de cómo se realiza la delcaración
- Lenguajes fuertemente tipados
- las variables deben de ser declaradas antes de usarlas.
- Durante la ejecución esa variable no cambia de tipo
//En un lenguaje como java
int edad;
String nombre;
edad = 25;
nombre="Manuel";
//En un lenguaje como php
$edad = 25;
$nombre="Manuel";
- Lenguajes débilmente tipados
- Los valores con los que trabaja siempre tienen un tipo.
- Éste no ha de ser declarado antes de ser utilizarlo.
- Esta declaración del tipo, va implícita cada vez que asignamos un valor a la variable utilizada.
- Este tipo cambiará si asignamos un valor de otro tipo.
$a = 5; //Ahora la variable $a es de tipo entero
$a = "Nieves"; //Ahora la variable $b es de tipo string
|
- El tipo de la variable es utlizado para saber cuánto espacio de memoria debo reservar para almacer el valor de esa variable.
- Por ejemplo en un entero puede ser que necesite 2 o 4 bytes, pero en un float 8 o 15 bytes, según la precisión
- Respecto a los tipos de variable, dependerá del lenguaje utilizado
- Consideremos el lenguaje php, como ya hemos comentado:
- entero o int , en php será de tipo int' con valores numéricos sin decimales
- real o float, en php será de tipo float' igualmente valores numéricos con decimales.
- cadena_caracteres o String en php será el tipo string valores con cadenas de caracteres
- booleano o boolean en php será de tipo booleano' o booligualmente. Valores verdad o falso
- null Corresponde a un valor que no existe o para especificar el tipo de una variable no tiene valor asignado.
Declaraciones que podemos realizar
- variables
- constantes
- funciones
- clases
- objetos y recursos (clases ya creadas o incluidas)
Temas posteriores
Las funciones,clases y objetos los veremos en otro tema
|
|
Tener claro el concepto
- Qué es un tipo de dato
- Qué es una variable
|
- Hay cuestions que son importantes tenerlas claras
- Son temas de programación básica
Definición
Un tipo de dato es un conjunto de valores para los cuales hay definidos una serie de operaciones
|
Definición
Una variable es una posición de memoria que va almacenar algún valor de un determinado tipo, y cuyo contenido puede variar durante la ejecución de un programa
|
- PHP
- Tipado dinámico
- Una características semántica muy, muy importante de php
PHP es un lenguaje tipado
- Esto es por que en todo momento todo valor y variable tienen un tipo
- Podemos ver su tipo, con funciones del lenguaje
|
- Los lenguajes de programación pueden ser mas o menos exigentes en cuanto a la declaración de los tipos de las variables para poder ser usados durante la ejecución de un programa.
- tipado dinámico
- Hay lenguajes fuertemente tipos (Java) o débilmente tipados (Basic)
- Esto tiene que ver con el hecho de que cada variable en un momento dado tiene un tipo, y lo podemos saber
- Esto ocurre en php
- Tipado dinámico
- Php no es estricto en el tipo de dato de una variable, en cuanto que éste puede cambiar durante su vida.
- En este sentido php es un lenguaje de tipado dinámico, el tipo de la variable depende del valor que tiene en un momento dado o de los operadores que lo afecten.
- La declaración de tipo no existe de forma explícita
- La declaración de tipo ocurre en el momento que a una variable se le asigne un valor de un tipo nuevo.
- Si le asigno un valor de otro tipo, vuelve a ocurrir una delcaración de tipo
PHP es un lenguaje de tipado dinámico
|
- Definir variables
- En php una variable es definida la primera vez que se usa.
- El tipo de la variable depende del valor que tenga asignado en un momento dado
- El identificador de la variable en php tiene que empezar por el signo $
- En 'php', las variables se representan con el signo $ seguido de un carácter de subrayado o una letra y luego letras, números y caracteres de subrayado en cualquier orden y número.
- PHP y variables
Resumen
- Php es un lenguaje tipado
- Php tipado dinámico
- Php no es estricto en la declaración de variables (La declaración ocurre la primera vez que se usa)
|
- identificador de variables
identificador = $[_|a.zA..Z][_|a..zA..Z0..9]*
}}
<?php
$miVariable= 8;/*Variable de tipo entero*/
edad = 5/*Error en el identificador*/
$5edad = 5 /*Error en el identificador */
?>
Tipos primitivos
- boolean: Valores TRUE y FALSE.
- entero: números enteros ... -2,-1,0,1,2 ...
- real: números reales
- string: Cadena de caracteres
- NULL: Valor null
|
Tipos compuestos
- array: conjunto enumerado por la clave de valores de diferente tipo
- objeto: Instancia de una clase en memoria
- recurso: objeto que permite utilizar elementos del sistema o recursos, (por ejemplo conector a una base de datos)
|
- La función gettype($variable) permite ver el tipo de una variable en un momento dado
- Asigna a una variable cada uno de los cinco tipos básicos
- Después de cada asignación visualiza el tipo con la función gettype()
Ver el código |
---|
%a = 10;
echo "Valor de la variable \$a es $a y es de tipo ".gettype($a)."<br />";
|
|
Tipos básicos: enteros
- entero integer
- Posible notación decimal/octal/hexadecimal
decimal [1..9][0..9]*
hexadecimal 0x[0..f]+
octal 0o[0..7]+ (Esta notación es a partir de la versión 8 de php)
binario 0b[01]+
- Todos ellos pueden ser positivos o negativos
**$Numero=10;
*Octal
**$NumeroOctal=067;
*Hexadecimal
**$NumeroHex=0cA56B;
- Haz un programa que asignes diferentes valores enteros a las variables.
- Realiza la asignación en distinto formato (decimal, octal, hexadecimal y binario).
- Prueba posteriormente a visualziarlo.
- Analiza e interpreta el resultado.
|
- integer
- Al imprimirlos con print los veré con valor decimal
- Para verlos en otras base hay que usar printf o format o utilizar las conversiones dechex o dechex o octdec, .... que veremos en otro apartado.
- Usa las fuciones especificadas anteriormente (decbin, dechex, decoct), para visualizar un número en los diferentes formatos numéricos
- Muestra el valor original, el convertido
- En el primer caso muestra el tipo del valor que retorna la función usada
|
real o coma flotante float
$valor=0.2345;
$valor=.54;
$valor=7E-12;
Booleano boolean
$estado=TRUE;
$estado=TrUe;
$estado=falsE;
NULL
- un tipo especial que solo tiene ese valor
- Una variable tiene el valor null
- Si aún no se le ha asignado valor, o éste se ha destruido (unset()
- Si se le ha asignado explícitamente el valor NULL.
Ejercicio 8.- Declaración de variables
- Haz un programa donde declares variables de diferentes tipos
- Asigna los valores con diferente formato
- Visualiza sus valores
Declaración de tipos |
---|
<?php
$entero = 5;
$cadena = "Esto es una cadena";
$float = 5.35;
$boleano = true;
$nulo = null;
echo "El valor de la variables \$entero es $entero<br />";
echo "El valor de la variables \$cadena es $cadena<br />";
echo "El valor de la variables \$float es $float<br />";
echo "El valor de la variables \$bolenao es $boleano<br />";
echo "El valor de la variables \$null es $null<br />";
?>
|
|
Los Tipos String
- Ya hemos visto anteriormente el timpo string
- Un string es un tipo formado por una cadena de caracteres representados por un sistema determinado de codificación
- En php no existe el tipo carácter, si bien una cadena es tratada internamente como un array de caracteres.
- En php hay muchas funciones de cadenas de caracteres, las podemos ver en la página oficial
"Esto es una cadena de carácteres"
https://www.php.net/language.types.string
https://www.php.net/manual/es/ref.strings.php
- La resolución compleja de expresinoes simples {}, sirve para obtener el valor de la variable como si fueran paréntesis.
- Por ejemplo, imagina que queremos concatenar a una variable un carácter.En principio necesitaríamos un operador de concatenación.
|
Ejemplo
|
|
<?php
$nombre="Manuel";
$apellido="Romero";
echo "Tu identificación $nombre_$apellido"
?>
Tu identificación Romero
- Esto es por que la primera variable es $nombre_ y la segunda $apellido, que es la única que tiene valor asignado
- Para que funcione, tendríamos que concatenar
<?php
$nombre="Manuel";
$apellido="Romero";
echo "Tu identificación $nombre"."_"."$apellido"
?>
- Pero también podríamos forzar un análisis complejo de la expresión
<?php
$nombre="Manuel";
$apellido="Romero";
echo "Tu identificación {$nombre}_{$apellido}";
?>
|
- Otra utilidad es para visualizar el valor de las variables de variables (Ver apartado correspondinete)
- Vamos a ver cómo se interpretan los diferentes tipos de variables en un string:
Visualizando variables
$modulo = "Desarrollo en el servidor";
echo "<h2>Estoy estudiando $modulo </h2>";
?>
Estoy estudiando Desarrollo en el servidor
- Entero y float aporta su valor como parte del string
$nota = 9.58;
echo "<h2>Y me estudio se recompensa con una nota de $nota</h2>";
?>
Y me estudio se recompensa con una nota de 9.58
- Booleano TRUE se convierte a "1" y false a un string vacío ""
$bool1 = true;
$bool2 = false;
echo "<h2> Visualizando booleanos: true -$bool1- y false -$bool2-</h2>";
?>
Visualizando booleanos: true -1- y false --
$valor = null;
echo "<h2> Visualizando el valor null -$valor-</h2>";
?>
Visualizando el valor null --
- Array, Genera la palabra Array
$vector = [1,2,3,4,5];
echo "<h2> Visualizando un array -$vector-</h2>";
?>
Visualizando un array -Array-
- Objetos y recursos, Genera un error al intentar convertirlo a string. Para ello usaremos un método de tipo string que veremos en su momento
<?php
Class foo {
}
$obj = new foo();
echo "<h2> Visualizando un objeto -$obj-</h2>";
?>
- No genera salida, y en fichero de errores nos informa
[Sun Oct 04 18:18:44.431637 2020] [php7:error] [pid 998] [client ::1:35958] PHP Fatal
error: Uncaught Error: Object of class foo could not be converted to string in
/var/www/prueba/8.php:5\nStack trace:\n#0 {main}\n thrown in /var/www/prueba/8.php on
line 5
- En caso de un recurso p.e. mysqli
<?php
<?php
$con =new mysqli("localhost","root", "root");
echo "<h2> Visualizando un recurso -$con-</h2>";
- Igualmente que el caso anterior no genera salida, y en fichero de errores nos informa
[Sun Oct 04 18:24:08.426281 2020] [php7:error] [pid 7883] [client ::1:35968] PHP Fatal
error: Uncaught Error: Object of class mysqli could not be converted to string in
/var/www/prueba/8.php:3\nStack trace:\n#0 {main}\n thrown in /var/www/prueba/8.php on
line 3
|
Heredoc
- Este tipo de expresión de string es útil para especificar cadenas largas en multilíneas
- Se comporta como un string entre comillas dobles para el tema de interpretar y escapar ciertos caracterres
- Se establece con el operador <<<
- A continuación viene un identificador
- Después empieza a especificarse la cadena de caracteres
- Para finalizarla se escribe en una nueva línea el identificador
<?php
$frase = <<<FINAL
Esta es una cadena
de caracteres que se asignará
a la variable frase
y termina con la palabra
con la que hemos empezado
FINAL;
?>
- MUY IMPORTANTE: La palabra final no debe tener ningún espacio ni tabulador antes de la etiqueta.
- Esta expresión también se puede utilizar encerrando al identificador delimitador entre comillas dobles
<?php
$frase = <<<"FINAL"
Esta es una cadena
de caracteres que se asignará
a la variable frase
y termina con la palabra
con la que hemos empezado
FINAL;
</div>
<div class="slide">
=====NowDoc=====
*Es igual que heredoc , pero sin interpretar los caracteres especiales salvo '''''\\''''' '''''\.'''''
*O sea que es como un entrecomillado sencillo
*La sintaxis es igual que la de heredoc, pero a diferencia el delimitador que se especifica al principio debe de ir entrecomillado con comillas simples
</div>
<div class="slide">
<source lang=php>
<?php
$nombre=pedro;
$frase = <<<'FINAL'
El valor de $nombre
es $nombre, pero aquí
no lo veo por que es nowdoc
FINAL;
?>
Tipos complejos
- Objetos básico en su aspecto de OOP
- Matrices o arrays muy muy utilizados
- Recursos este más que un tipo complejo es un tipo especial que hace referencia a un recurso externo referencia , como una conexión a una base de datos o como una referencia a un fichero pdf.
- Este tipo de variables las veremos más adelante
</div>
Variables de variables
https://www.php.net/manual/es/language.variables.variable.php
- Consiste en declarar el valor de una variable como otra variable.
- Imagina el sigueinte código
$fruta ="fresas";
$fresas = 25;
- Podemos hacerlo de la siguiente forma
$fruta ="fresas";
$$fruta = 25;
- En ambos casos $fresas valdrá 25
- Si declaramos una variable a variable con $$, lo que estamos haciendo es que el contenido de la variable también sea variable y contenga un valor
$asignatura="modulo"
$$nombre ="BD"; // ahora diremos que $modulo vale BD
- En el ejemplo vemos que $nombre vale módulo, si ahora asignamos un valor a $$nombre, estaremos creando una variable (el contendio de $nombre), de la variable $nombre, y ese contenido tendrá un valor ("BD")
- Aquellos contenidos a los que asignemos valores se quedarán en el espacio de nombres de variables