Created: 2025-01-09 jue 13:01
https://alvarogonzalezsotillo@gitlab.com/alvarogonzalezsotillo/apuntes-clase-ejemplos-php.git
https://www.php.net/manual/es/language.variables.basics.php
$
_
_
https://www.php.net/manual/es/language.types.php
https://www.php.net/manual/es/language.types.string.php
\
\
y '
se escapan con \
. Todos los demás no se escapan.Secuencias de escape de cadenas | |
---|---|
\n |
avance de línea (LF o 0x0A (10) en ASCII) |
\r |
retorno de carro (CR o 0x0D (13) en ASCII) |
\t |
tabulador horizontal (HT o 0x09 (9) en ASCII) |
\v |
tabulador vertical (VT o 0x0B (11) en ASCII) (desde PHP 5.2.5) |
\e |
escape (ESC o 0x1B (27) en ASCII) (desde PHP 5.4.4) |
\f |
avance de página (FF o 0x0C (12) en ASCII) (desde PHP 5.2.5) |
\\ |
barra invertida |
\$ |
signo de dólar |
\" |
comillas dobles |
\999 |
Caracter en octal |
\xFF |
caracter hexadecimal |
\u{FFFF} |
Caracter unicode |
$nombre = "María";
echo <<<EOT
Mi nombre es "$nombre".
Esto debería mostrar una 'A' mayúscula: \x41
EOT;
$nombre = "María";
echo <<<'EOT'
Mi nombre es "$nombre".
Esto debería mostrar una 'A' mayúscula: \x41
EOT;
https://www.php.net/manual/es/language.constants.php
https://www.php.net/manual/es/reserved.constants.php
define(NOMBRE, valor)
$
constant(NOMBRE)
https://www.php.net/manual/es/language.control-structures.php
if( CONDICION ){
SI ES CIERTO
}
else{
SI ES FALSO
}
Ejercicio: si la multiplicación de dos variables es mayor de 50, muestra el resultado con fondo rojo. Si no, el fondo será transparente
while(CONDICION){
SENTENCIAS QUE SE REPITEN
DEBERIA CAMBIARSE LA CONDICION
}
Ejercicio: muestra un tablero de ajedrez, con tantas filas y columnas como se diga en dos variables
for (EXPR1; EXPR2; EXPR3){
SENTENCIA
}
Es equivalente a un bucle while
EXPR1;
while (EXPR2){
SENTENCIA
EXPR3
}
Ejercicio: Muestra todas las imágenes de https://www.glerl.noaa.gov/data/ice/max_anim/png, desde 1973 a 2024.
Ejercicio: Muestra todas las imágenes de https://jareksastro.org/astro/, desde m0 a m23.
$array = [
"foo" => "bar",
"bar" => "foo",
];
$alumnos = [
"Pepe",
"María",
"Juan",
"Susana"
];
$alumnos = [
"Pepe",
"María",
"Juan",
"Susana"
];
foreach($alumnos as $alumno){
print( "Alumno: $alumno" )
}
foreach($alumnos as $posicion => $alumno){
print( "Alumno $posicion: $alumno" )
}
Ejercicio: muestra las siguientes imágenes de https://astro.uni-bonn.de/~ithies/images/Planet_Formation_Illustrated/PNG/ en una página web:
annulus1.png |
annulus2.png |
ejection1.png |
ejection2.png |
ejection3.png |
encounter1.png |
encounter2.png |
formation1.png |
formation2.png |
formation3.png |
formation4.png |
formation5.png |
formation6.png |
formation7.png |
formation8.png |
formation9.png |
inclined1.png |
inclined2.png |
inclined3.png |
inclined4.png |
kozai1.png |
kozai2.png |
kozai3.png |
rmleffect1.png |
rmleffect2.png |
system1.png |
system2.png |
continue
for( $i = 0 ; $i < 10 ; $i += 1 ){
if( $i % 3 != 0 ){
continue;
}
echo( "$i es múltiplo de 3\n");
}
include
, require
include
: Si el fichero no existe, provoca un warningrequire
: Si el fichero no existe, provoca un errorinclude_once
, require_once
: Si ya ha sido incluido, no se vuelve a incluirhttps://www.php.net/manual/en/language.exceptions.php
throw
, no con errores generales.mysqli
<?php
function inverso($x) {
if (!$x) {
throw new Exception('División por cero.');
}
return 1/$x;
}
try {
echo inverso(5) . "\n";
echo inverso(0) . "\n";
}
catch (Exception $e) {
echo 'Excepción capturada: ', $e->getMessage(), "\n";
}
finally{
echo 'Esto ocurre haya o no haya pasado por catch\n';
}
https://www.php.net/manual/es/language.functions.php
<?php
function foo($arg_1, $arg_2, /* ..., */ $arg_n)
{
echo "Función de ejemplo.\n";
return $valor_devuelto;
}
?>
https://www.php.net/manual/es/language.variables.scope.php
$a = 3; // GLOBAL
function fun1(){
echo $a; // ERROR, VARIABLE NO DEFINIDA
}
function fun2(){
global $a;
echo $a; // IMPRIME 3
}
function fun3(){
$a = 4
echo $a; // IMPRIME 4
echo $GLOBALS["a""]; // IMPRIME 3
}
Nota: para $GLOBALS
ver Variables predefinidas
es_capicua
es_primo
function incrementa($variable, $valor){
$variable += $valor;
}
$unavariable = 3;
incrementa($unavariable, 4);
echo $unavariable; // IMPRIME 3
function incrementa(&$variable, $valor){
$variable += $valor;
}
$unavariable = 3;
incrementa($unavariable, 4);
echo $unavariable; // IMPRIME 7
class Persona {
public $nombre;
public function __construct($nombre) {
$this->nombre = $nombre;
}
}
function cambiarNombre($persona) {
$persona->nombre = "Carlos";
}
$persona1 = new Persona("Ana");
cambiarNombre($persona1);
echo $persona1->nombre; // Imprime "Carlos", no "Ana"
phpinfo |
htmlspecialchars |
parse_url |
explode, explode |
strpos, substr, trim |
strtolower, strtoupper |
filter_var |
php-xdebug
var_dump
error_reporting
isset
is_numeric, is_array, is_nan
php.ini
:
display_errors
display_startup_errors
log_errors
<?php
$url = 'http://username:password@hostname:9090/path?arg=value#anchor';
var_dump(parse_url($url));
var_dump(parse_url($url, PHP_URL_SCHEME));
var_dump(parse_url($url, PHP_URL_USER));
var_dump(parse_url($url, PHP_URL_PASS));
var_dump(parse_url($url, PHP_URL_HOST));
var_dump(parse_url($url, PHP_URL_PORT));
var_dump(parse_url($url, PHP_URL_PATH));
var_dump(parse_url($url, PHP_URL_QUERY));
var_dump(parse_url($url, PHP_URL_FRAGMENT));
?>
setcookie()
$_COOKIE
getallheaders()
: consigue todas las cabeceras enviadas por el cliente
Accept
, Cache-Control
, Content-Enconding
…header()
: Envía una cabecera en la respuesta HTTP
Content-Type
, Location
, Transfer-Encoding
…Location
Content-Type
https://www.php.net/manual/es/language.variables.predefined.php
$GLOBALS — Hace referencia a todas las variables disponibles en el ámbito global $_SERVER — Información del entorno del servidor y de ejecución $_GET — Variables HTTP GET $_POST — Variables POST de HTTP $_FILES — Variables de subida de ficheros HTTP $_REQUEST — Variables HTTP Request $_SESSION — Variables de sesión $_ENV — Variables de entorno $_COOKIE — Cookies HTTP
https://www.php.net/manual/es/tutorial.forms.php https://www.php.net/manual/es/language.variables.external.php
enctype="multipart/form-data"
php.ini
file_uploads
upload_max_filesize
upload_tmp_dir
post_max_size
max_input_time
$_FILES
contiene los ficheros subidoshttps://www.php.net/manual/es/book.session.php https://www.php.net/manual/es/session.examples.basic.php
$_SESSION
es un array con valores, que pueden pasarse de una página a otrasession_start()
se basa en cookies y ficheros en el servidor
PHPSESSID
SID
en vez de cookiessession.save_path
session_start();
if (!isset($_SESSION['count'])) {
$_SESSION['count'] = 0;
} else {
$_SESSION['count']++;
}
session_start();
unset($_SESSION['count']);
session_start();
session_destroy(); // esto no destruye $_SESSION
fetch
XMLHttpRequest
fetch
const response = await fetch("https://example.org/post", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({ username: "example" }),
});
const form = document.getElementById("formulario");
const formData = new FormData(form);
const response = fetch( "./api.php", {
method: "POST",
body: formData
})
fetch( "./api/endpoint", {
method: "POST",
body: JSON.stringify({ username:"example", action:"create"} )
}).
then( response =>{
const json = =response.json();
// PROCESAR EL JSON DE RESPUESTA
}).
catch( err => {
alert("Error:" + err );
console.err(err);
});
json_decode()
: Convierte una cadena de JSON a un array de PHP.json_encode()
: Convierte un array de PHP a una cadena JSON.<?php
$json = file_get_contents('php://input');
$request = json_decode($json, true);
// PROCESAR $request Y CREAR EL ARRAY DE RESPUESTA EN $response
header('Content-Type: application/json');
echo json_encode($response);
?>