LENGUAJE PHP: EL LENGUAJE EN GENERAL
¡El servidor te responde
PHP Un lenguaje de script al lado del servidor
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;
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
<?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
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
Constantes
- Las constantes se declaran una vez
- No se pueden modificar, solo usar
|
Declaración y uso de las constantes
- Constantes
- Se definen con la función define()
- O con la palabra reservada const
define("IVA",0.21);
const IVA_BASE = 0.06;
.....
$total=$base*(1+IVA);
$total=$base_2*(1+IVA_BASE);
- Identificador
- Se usa el mismo criterio de construcción pero no empieza por $
- Se pueden definir y utilizar en cualquier momento que se necesiten.
- Para saber si una constante está definida defined()
- Para muchos casos puedo usar igualmente const y define
- Sin embargo hay una serie de diferencias que en algún caso pueden ser importantes
- Revisa la siguiente entrada
https://stackoverflow.com/questions/2447791/define-vs-const
- Las constantes, como toda expresión, también tienen tipo, que dependerá de su valor
(: Para visualizar el valor de una constante en una cadena, hay que concatenarla, ya que el identificador no tiene ningún carácter especial, como es en el caso de las variables
<?php
const IVA=0.21
echo "Importe de iva ".IVA;
?>
)
Declarando constantes
Declarar dos constantes de diferente tipo y visualiza el tipo y el valor
declarando constantes |
---|
<?php
//Declaración de constantes de dos formas
const A =1;
define ("B", "Cadena");
//Visualización de valores
echo "valor de la constante A ".A ."<br />";
echo "valor de la constante B ".B."<br />";
echo "tipo de la constante A ". gettype(A)."<br />";
echo "tipo de la constante B ". gettype(B)."<br />";
?>
|
|
Declarando constantes
- Haz un programa donde tenga declarado IVA_GENERAL e IVA_REDUCIDO
- El tipo de IVA es 21% y 10% respectivamente
- Informa de una factura donde se han comprado:
- 3 barras de pan a 0.80 mas iva reducido
- 5 bombillas a 5.4 mas iva general
- Muestra importe base, iva e importe total
- informa también del iva aplicado
Declarando constantes |
---|
<?php
const IVA_REDUCIDO =0.10;
define ("IVA_GENERAL" ,0.21);
echo "<h2>Compra realizada en fecha ".date()."</h2>";
echo "<hr />";
echo "3 barras de pan a 0.80 + ". 0.80*IVA_REDUCIDO ."= ". 0.80*(1+IVA_REDUCIDO)."Euros<BR />";
echo "5 bombillas a 5.40 + ". 5.40*IVA_GENERAL ."= ". 5.40*(1+IVA_GENERAL)."Euros <BR />";
echo "<h4>Iva aplicado:<h4>";
echo "<h5>Iva general :".IVA_GENERAL ." <h4>";
echo "<h5>Iva reducido :".IVA_REDUCIDO ." <h4>";
?>
|
|
- la función define() admite un tercer parámetro que le hace insensible a mayúscula-minúscula.
- Observa el siguiente código e interpreta las salida
//Genera un warning, y funciona
define (SALUDO1 , "HOLA");
echo "valor de saludo " . SALUDO1."<br />";
define ("SALUDO2" , "OTRO HOLA");
echo "valor de saludo " . SALUDO2."<br />";
define ("SALUDO3" , "OTRO HOLA de nivel 3");
//imprime la palabra saludo3
echo "valor de saludo " . saludo3."<br />";
define ("SALUDO3" , "OTRO HOLA de nivel 3", true);
//imprime el valor
echo "valor de saludo " . saludo3."<br />";
define ("saludo4" , "OTRO HOLA nivel 4");
//imprime la palabra SALUDO4
echo "valor de saludo " . SALUDO4."<br />";
define ("saludo4" , "OTRO HOLA nivel 4", true);
//imprime la palabra saludo4
echo "valor de saludo " . SALUDO4."<br />";
Constantes predefinidas
- Como en otros lenguajes, existen una serie de constantes predefinidas
- Nos las ofrece el entorno y dependerán de él para su valor
- PHP Ofrece un gran número de constantes predefinidas http://php.net/manual/es/reserved.constants.php
- En php hay 8 constantes que su valor puede cambiar dependiendo del entorno donde se ejecutan
constantes predefinidas en php
Funciones en php
- Para declarar funciones usamos la siguiente sintaxis
function nombre_funcion([tipo]$var1[=valor_por_defecto], ...):[tipo_retorno]{
[instrucciones]
[return [expresion]]
}
- Veremos más sobre funciones más adelante
- De momento vemos
</div>