Created: 2025-01-30 jue 19:05
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 | 
continuefor( $i = 0 ; $i < 10 ; $i += 1 ){
    if( $i % 3 != 0 ){
        continue;
    }
    echo( "$i es múltiplo de 3\n");
}
include, requireinclude: 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_capicuaes_primofunction 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-xdebugvar_dumperror_reportingissetis_numeric, is_array, is_nanphp.ini:
display_errorsdisplay_startup_errorslog_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()$_COOKIEgetallheaders(): 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…LocationContent-Typehttps://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_uploadsupload_max_filesizeupload_tmp_dirpost_max_sizemax_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
PHPSESSIDSID en vez de cookiessession.save_pathsession_start();
if (!isset($_SESSION['count'])) {
  $_SESSION['count'] = 0;
} else {
  $_SESSION['count']++;
}
session_start();
unset($_SESSION['count']);
session_start();
session_destroy(); // esto no destruye $_SESSION
fetchXMLHttpRequestfetchconst response = await fetch("https://example.org/post", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },    
  body: JSON.stringify({ username: "example" }),  
});
const json = await response.json();
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( async (response) =>{
    const json = await 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);
?>