Usuario:ManuelRomero/CertificadoWeb2021/IntroduccionPHP/instrucciones
LENGUAJE PHP: EL LENGUAJE EN GENERAL
PHP Un lenguaje de script al lado del servidor
Contenido
Programa: conjunto de instrucciones
Planteando un lenguaje de programación
- Léxicos
- Son las palabras reservadas del lenguaje.
http://php.net/manual/es/reserved.keywords.php
- Sintaxis
Reglas de construcción. Son las ya conocidas, pero veremos cómo se construyen las expresiones.
- Semántica
Habla del significado.
Instrucciones en un lenguaje de programación
- Inicio Fin de bloque
- Instrucción/función de leer del teclado, escribir por pantalla
- Declaraciones (variables, constantes, funciones, clases, objetos, ...)
- Asignación
- Invocación (llamada a función o método)
- Estructura de control (selectiva, iterativa, control de excepciones).
Tipos de valores usados en php
(: Como hemos comentado, las instrucciones trabajan con valores)
(: Sobre los valores, realizaremos operaciones)
- En php tenemos los siguientes valores
Valores simples | Valores compuestos | |||||
Numéricos | String | Booleanos | Null | Arrays | Objetos | Recursos |
- numércios
- Cadenas de caracteres
- booleanos
- null
- arrays
- objetos
- recursos
//Enteros y reales 5; 5.5; 0b1100101; //Representacion en binario 0xFAfF4; //Representacion en hexadecimal 0733353; //Representacioń en octal 54e34; //Notacion científica 43e-10; //operaciones +,-*,/ .... //String o cadena de caracteres "Esto es una cadena"; 'esto es otra cadena'; //Operaciones concatenar . //Booleanos true; false; //Operaciones lógicas AND OR ! //Valor null null; //Ahora tipos compuestos //arrays ["servidor", "cliente"]; //Objetos class Persona { private $nombre; private $apellido; private $telefono; } //recursos new mysqli();
- Instrucción de inicio fin de bloque
{ //Instrucción de inicio de bloque } //Instrucción de fin de bloque
string
- Antes de ver cómo escribir un string (echo), vamos a comentar los string.
- Un string es una cadena de caracteres.
- Para representarla encerraremos caracteres entre comillas simples o commillas dobles, que dependiendo de lo que contenga, puede tener diferentes comportameninto, como veremos posteriormente.
"Esto es una cadena encerrada entre comillas dobles que tiene caracteres,
números 12345 y algún caracter no letra como % & y = y cualquiera en principio será imprimible"
'Esto es una cadena encerrada entre comillas dobles que tiene caracteres,
números 12345 y algún caracter no letra como % & y = y cualquiera en principio será imprimible'
- Dentro de un string, además de caracteres imprimibles como en el ejemplo anterior, pero también hay caracteres que tienen un significado especial, y ahí será diferente usar comillas simples y comillas dobles.
- Caracteres especiales
Los siguientes caracteres son especiales, esto implica que no se imprimirán y tendrán algún tipo de efecto con los caracteres que le siguen:
Carácter | Significado | Ejemplo | Acción |
---|---|---|---|
$ | Sintaxis simple de interpretacion de variable | $edad | Se sustituirá la variable por su valor en este caso por el valor de $edad |
\ | Secuenca de escape | El carácter que le sigue será interpretado como una secuencia de escape (ver tabla posterior) | |
{} | Sintaxis compleja | ${nota['maria']} | Se realiza una doble interpretación en este caso para acceder a un elemento de un array |
secuencia de escape
- Caracteres especiales con \
https://www.php.net/manual/es/regexp.reference.escape.php
- Secuencias de escape: hay caracteres no imprimibles que podemos querer representar, para ello usaremos la barra invertida \.
Secuencia de escape | Significado |
---|---|
\’ | Comillas simples |
\" | Comillas dobles |
\\ | Barra invertida |
\n | Nueva linea (endl) |
\r | Retorno |
\t | Tabulación Horizontal |
\v | Tabulación Vertical |
\0 - \777 | Código ascii(octal) |
\x0 - \xFF | Código ascii (hexadecimal) |
- Para especificar una cadena de caracteres posemos usar "", (más adelante veremos otras dos formas muy parecidas que son con el operador <<<, conocidos como heredoc y newdoc)
- Aquí hay una gran diferencia en usar las comillas dobles "", y utilizar las comillas simples
|
Funciones de salida
- Construcciones básicas para salida de caracteres
- En PHP,en realidad no son funciones por lo que pueden ir sin paréntesis (con o sin paréntesis):
- echo
- Existen otras funciones que iremos viendo según avance el curso, pero podemos probar ahora
- printf
- print_r
- var_dump
- Antes de continuar viendo echo, vamos a presentar los valores cadena de caracteres o string
echo
- Es el uso más sencillo
- Imprime una #cadena como argumentos
- En la versión sin paréntesis , también puedes pasar una lista de argumentos.
<?php *echo “primer argumento”, “segundo argumento”, “tercer argumento” ?>
- Secuencias de escape
- Cuando escribimos texto con echo, lo que ocurre es que se aporta ese texto al fichero html o recurso que se le va a entregar al cliente que ha solicitado el recurso.
- Este texto, posteriormente, se interpreta y renderiza en un navegador
- Etiquetas html
Si con echo escribimos una etiqueta html, esta se escribirá tal cual, y el navegador rederizará la etiqueta.
|
|
- En la versión sin paréntesis , también puedes pasar una lista de argumentos.
<?php *echo “primer argumento”, “segundo argumento”, “tercer argumento” ?>
- Esta sentencia es igual en uso y funcionalidad que echo
- Tiene dos diferencias con echo
- Sólo puede aceptar un argumento
- Devuelve un valor booleano que representa si la sentencia ha tenido exito o no
printf
- Es un función que imprime con formato (se usa igual que en java)
- Los especificadores de formato son
- %s string
- %c carácter
- %d (decimal), %u(decimal sin signo) %o(octal), %x, %X (hexadecimal), %b(binario)
- %f, %F (Float con decimales), %e, %E (Float con notación ciétífica,
- En su uso especificaremos el valor con el formato que queramos visualizar, en la cadena de carácteres, y después, separado por comas, los valores (o variables)a visualizar. La relación es respectiva y posicionaL
$n = 5.25251; printf ("Valor del número con 2 decimales %.2f ", $n); //Mostrará 5.25, solo dos decimales
|
Declaraciones
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.
//En un lenguaje como java int edad; String nombre; edad = 25; nombre="Manuel"; //En un lenguaje como php $edad = 25; $nombre="Manuel";
$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.
|
- Hay cuestions que son importantes tenerlas claras
- Son temas de programación básica
Un tipo de dato es un conjunto de valores para los cuales hay definidos una serie de operaciones |
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
|
- 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
- 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
|
- 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 */ ?>
Valores y tipos de datos
http://php.net/manual/es/language.types.intro.php
- En Php tenemos 8 tipos de datos
- 5 tipos básicos o primitivos (un valor)
- 3 tipos compuestos (conjunto de valores).
- La función gettype($variable) permite ver el tipo de una variable en un momento dado
|
Tipos básicos: enteros
- entero integer
- Posible notación decimal/octal/hexadecimal
decimal [1..9][0..9]* hexadecimal 0x[0..f]+ octal 0[0..7]+ binario 0b[01]+
- Todos ellos pueden ser positivos o negativos
**$Numero=10; *Octal **$NumeroOctal=067; *Hexadecimal **$NumeroHex=0cA56B;
|
- 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.
|
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.
$a=NULL; $a=null;
|
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
<?php $nombre="Manuel"; $apellido="Romero"; echo "Tu identificación $nombre"."_"."$apellido" ?>
<?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:
$modulo = "Desarrollo en el servidor"; echo "<h2>Estoy estudiando $modulo </h2>"; ?>
Estoy estudiando Desarrollo en el servidor
$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
$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 --
$vector = [1,2,3,4,5]; echo "<h2> Visualizando un array -$vector-</h2>"; ?>
Visualizando un array -Array-
<?php Class foo { } $obj = new foo(); echo "<h2> Visualizando un objeto -$obj-</h2>"; ?>
[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
<?php <?php $con =new mysqli("localhost","root", "root"); echo "<h2> Visualizando un recurso -$con-</h2>";
[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
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
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; ?>
)
Declarar dos constantes de diferente tipo y visualiza el tipo y el valor
|
|
- 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