Declaraciones
Objetivo
- Una declaración es una instrucción fundamental.
- Aunque no realiza una acción directa, su objetivo principal es reservar 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 más adelante.
- La forma en que se realizan las declaraciones varía según el lenguaje de programación utilizado.
Lenguajes de programación en función de cómo se realiza la declaración
- Lenguajes fuertemente tipados
- Las variables deben 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.
- Este no ha de ser declarado antes de ser utilizado.
- El tipo va implícito cada vez que asignamos un valor a la variable utilizada.
- El tipo cambiará si asignamos un valor de otro tipo.
$a = 5; // Ahora la variable $a es de tipo entero
$a = "Nieves"; // Ahora la variable $a es de tipo string
|
- El tipo de la variable se utiliza para saber cuánto espacio de memoria debe reservarse para almacenar el valor de esa variable.
- Por ejemplo, un entero puede necesitar 2 o 4 bytes, pero un float 8 o 15 bytes, según la precisión.
- Respecto a los tipos de variables, 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, con valores numéricos con decimales.
- cadena_caracteres o string, en PHP será el tipo string, que representa cadenas de caracteres.
- booleano o boolean, en PHP será de tipo boolean, con valores verdadero o falso.
- null Corresponde a un valor que no existe o para especificar que la 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 cuestiones que son importantes tener claras.
- Son temas de programación básica.
Definición
Un tipo de dato es un conjunto de valores para los cuales hay definidas una serie de operaciones.
|
Definición
Una variable es una posición de memoria que va a 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ística semántica muy importante de PHP.
PHP es un lenguaje tipado
|
- Los lenguajes de programación pueden ser más 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 tipados (como Java) o débilmente tipados (como Basic).
- Esto tiene que ver con el hecho de que cada variable en un momento dado tiene un tipo, y lo podemos conocer.
- 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 en que a una variable se le asigna un valor de un tipo nuevo.
- Si le asigno un valor de otro tipo, vuelve a ocurrir una declaració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 es de 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: Cadenas 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 = 0xA56B;
- Haz un programa que asigne diferentes valores enteros a las variables.
- Realiza la asignación en distintos formatos (decimal, octal, hexadecimal y binario).
- Prueba posteriormente a visualizarlo.
- Analiza e interpreta el resultado.
|
- integer
- Al imprimirlos con `print`, los veré con valor decimal.
- Para verlos en otras bases, hay que usar `printf` o `format` o utilizar las funciones de conversión (`decbin`, `dechex`, `octdec`), que veremos en otro apartado.
- Usa las funciones especificadas anteriormente (`decbin`, `dechex`, `decoct`) para visualizar un número en los diferentes formatos numéricos.
- Muestra el valor original y 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 (usando `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;
$booleano = true;
$nulo = null;
echo "El valor de la variable \$entero es $entero<br />";
echo "El valor de la variable \$cadena es $cadena<br />";
echo "El valor de la variable \$float es $float<br />";
echo "El valor de la variable \$booleano es $booleano<br />";
echo "El valor de la variable \$nulo es $nulo<br />";
?>
|
|
Los Tipos String
- Ya hemos visto anteriormente el tipo 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 para trabajar con cadenas de caracteres. Las podemos ver en la página oficial:
"Esto es una cadena de caracteres";
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