Guida Completa alle Funzioni Arrow in PHP 8
Scopri come le arrow functions di PHP 8 possono semplificare il tuo codice e renderlo più leggibile.
Esplora le nuove funzionalità di PHP 8.2 che rendono il codice più sicuro e manutenibile.
Autore
Giovanni D'Ippolito
Pubblicato
09 November 2025
Tempo di lettura
2 minuti
PHP 8.2 introduce diverse funzionalità che migliorano la sicurezza del tipo e riducono il boilerplate code.
Le classi readonly rendono immutabili tutte le proprietà:
<?php
// PHP 8.2+
readonly class User
{
public function __construct(
public string $name,
public string $email,
public int $age,
) {}
}
$user = new User('Giovanni', 'giovanni@devgd.it', 30);
// ❌ Questo genera un errore
$user->name = 'Mario'; // Cannot modify readonly property
// ✅ Per modificare, devi creare una nuova istanza
$updatedUser = new User('Mario', $user->email, $user->age);
?>
Ora puoi combinare union e intersection types:
<?php
class PostRepository
{
// Union di intersection types
public function find(int|string $id): (Post&Publishable)|(Draft&Editable)|null
{
// Logica di ricerca
}
}
// Esempio pratico con interfacce
interface Renderable {}
interface Cacheable {}
interface Loggable {}
class DataService
{
public function process((Renderable&Cacheable)|(Loggable&Cacheable) $data): void
{
if ($data instanceof Cacheable) {
// Sicuramente Cacheable
}
}
}
?>
Maggiore precisione nella definizione dei tipi:
<?php
class ValidationResult
{
// Può restituire solo true
public function isValid(): true
{
// Se arriva qui, è sempre true
return true;
}
// Può restituire solo false
public function hasErrors(): false
{
return false;
}
}
class Cache
{
// Restituisce la stringa o null
public function get(string $key): string|null
{
// Implementazione
}
// Metodo che restituisce solo false in caso di errore
public function set(string $key, mixed $value): true|false
{
// Implementazione
}
}
?>
Finalmente puoi definire costanti nei trait:
<?php
trait HasApiEndpoint
{
public const API_VERSION = 'v1';
public const BASE_URL = 'https://api.example.com';
public function getEndpoint(): string
{
return self::BASE_URL . '/' . self::API_VERSION;
}
}
class UserService
{
use HasApiEndpoint;
public function fetchUsers(): array
{
$url = $this->getEndpoint() . '/users';
// Fetch logic
}
}
?>
Scopri come le arrow functions di PHP 8 possono semplificare il tuo codice e renderlo più leggibile.
Scopri come usare gli Enums di PHP 8.1 per rendere il tuo codice più sicuro e espressivo.
Scopri come usare gli Attributes di PHP 8 per aggiungere metadata al tuo codice.
Iscriviti alla nostra newsletter per ricevere gli ultimi articoli e novità direttamente nella tua casella di posta.