Нужна срочная помощь с сайтом?Опишите нам проблему, и мы ответим как можно быстрее.

Storia di PHP: dalla creazione all’attuale versione 8.3

PHP è uno dei linguaggi di programmazione più popolari per lo sviluppo web. Dalla sua creazione nel 1994, ha fatto molta strada, trasformandosi da semplice strumento per pagine web dinamiche in un linguaggio di programmazione potente, ad alte prestazioni e versatile. Esaminiamo le principali fasi del suo sviluppo e discutiamo nel dettaglio i cambiamenti chiave nelle versioni 8.0, 8.1, 8.2 e 8.3.


Fasi dello sviluppo di PHP

1995: nascita di PHP/FI 1.0

PHP fu creato dal programmatore danese Rasmus Lerdorf nel 1994 come insieme di script Perl per monitorare le visite al suo curriculum sul sito web. Nel 1995 pubblicò la prima versione di PHP/FI (Personal Home Page/Forms Interpreter), che supportava i moduli HTML e l’interazione con i database.

1998: PHP 3.0 e la rivoluzione del linguaggio

Con l’aiuto di Zeev Suraski e Andi Gutmans, PHP fu completamente riscritto, portando al rilascio di PHP 3.0 nel 1998. Includeva il nuovo motore Zend Engine, che aumentò notevolmente le prestazioni e la flessibilità del linguaggio. PHP 3 fu la prima variante del linguaggio ampiamente utilizzata a supportare la programmazione orientata agli oggetti.

2000: PHP 4.0 e l’arrivo di Zend Engine

PHP 4 con Zend Engine 1.0 arrivò nel 2000, offrendo prestazioni migliorate e supporto per le sessioni, rendendo PHP più adatto alla creazione di complesse applicazioni web dinamiche.

2004: PHP 5.0 e una nuova era della programmazione orientata agli oggetti

PHP 5, rilasciato nel 2004, introdusse il supporto completo alla programmazione orientata agli oggetti, un’interazione migliorata con i database tramite PDO (PHP Data Objects) e un nuovo modello di gestione delle eccezioni.

2015: PHP 7.0 e un significativo miglioramento delle prestazioni

Nel 2015 PHP 7.0 introdusse la nuova generazione Zend Engine 3.0, raddoppiando la velocità di esecuzione del codice e aggiungendo il supporto alla tipizzazione degli argomenti delle funzioni e dei valori di ritorno.


PHP 8: principali novità

PHP 8.0, rilasciato nel novembre 2020, ha rappresentato un importante passo avanti grazie a numerose nuove funzionalità e miglioramenti che hanno reso il linguaggio più comodo, performante ed espressivo. Le principali novità includono:

1. Compilazione JIT (Just-in-time)

Il compilatore JIT consente di compilare dinamicamente parte del bytecode in codice macchina durante l’esecuzione. Ciò è particolarmente utile per attività a elevata intensità di calcolo, come il calcolo scientifico o il machine learning. Tuttavia, JIT ha un impatto minore sulle normali applicazioni web.

Esempio:

<?php
function fibonacci($n) {
    if ($n == 0) return 0;
    if ($n == 1) return 1;
    return fibonacci($n-1) + fibonacci($n-2);
}

echo fibonacci(30);
?>

2. Match Expression (corrispondenza di modelli)

match è una versione migliorata dell’istruzione switch, che utilizza una tipizzazione rigorosa, non richiede istruzioni break e può restituire direttamente un risultato.

Esempio di utilizzo di match:

<?php
$status = 404;

$message = match ($status) {
    200 => 'OK',
    404 => 'Not Found',
    500 => 'Internal Server Error',
    default => 'Unknown Status',
};

echo $message;  // Выведет: Not Found
?>

3. Argomenti denominati

Gli argomenti denominati consentono di passare parametri alle funzioni per nome, rendendo le chiamate alle funzioni più chiare e pratiche.

Esempio:

<?php
function greet(string $name, string $greeting = 'Hello') {
    echo "$greeting, $name!";
}

greet(name: 'John', greeting: 'Welcome');  // Выведет: Welcome, John!
?>

4. Union Types (tipi unione)

I tipi unione consentono di specificare più tipi per gli argomenti e i valori di ritorno.

Esempio:

<?php
function processInput(int|string $input) {
    if (is_int($input)) {
        return $input * 2;
    } else {
        return strtoupper($input);
    }
}

echo processInput(10);  // Выведет: 20
echo processInput('hello');  // Выведет: HELLO
?>

5. Constructor Property Promotion

Questa novità consente di assegnare automaticamente le proprietà dell’oggetto dagli argomenti del costruttore, riducendo il codice.

Esempio:

<?php
class Point {
    public function __construct(
        public int $x,
        public int $y
    ) {}
}

$point = new Point(3, 5);
echo $point->x;  // Выведет: 3
?>

6. Errori per riferimenti non validi

PHP 8 genera errori quando si accede a chiavi di array o proprietà di oggetti inesistenti, aumentando l’affidabilità del codice.

Esempio:

<?php
$data = [];
echo $data['key'];  // Fatal Error: Uncaught Error: Undefined array key "key"
?>

PHP 8.1: novità importanti

PHP 8.1, rilasciato nel novembre 2021, ha aggiunto numerose funzionalità e miglioramenti importanti, come enumerazioni, fiber e proprietà readonly.

1. Enums (enumerazioni)

Le enumerazioni (enum) consentono di definire un insieme fisso di valori utilizzati nel codice.

Esempio:

<?php
enum Status {
    case Pending;
    case Completed;
    case Failed;
}

function handleStatus(Status $status) {
    return match ($status) {
        Status::Pending => 'Pending',
        Status::Completed => 'Completed',
        Status::Failed => 'Failed',
    };
}

echo handleStatus(Status::Pending);  // Выведет: Pending
?>

2. Fiber (Fibers)

Le fiber aggiungono la possibilità di creare thread cooperativi in PHP, semplificando la programmazione asincrona.

Esempio:

<?php
$fiber = new Fiber(function() {
    $value = Fiber::suspend('fiber suspended');
    echo "Resumed: $value\n";
});

echo $fiber->start();  // Выведет: fiber suspended
$fiber->resume('resume value');  // Выведет: Resumed: resume value
?>

3. Readonly Properties

Le proprietà readonly possono essere inizializzate solo durante la creazione dell’oggetto, dopodiché diventano immutabili.

Esempio:

<?php
class User {
    public readonly string $name;

    public function __construct(string $name) {
        $this->name = $name;
    }
}

$user = new User('Alice');
// $user->name = 'Bob';  // Ошибка, так как свойство readonly
?>

PHP 8.2: il proseguimento dei miglioramenti

PHP 8.2, rilasciato nel dicembre 2022, ha introdotto ulteriori miglioramenti della sintassi e nuove funzionalità.

1. Classi readonly

PHP 8.2 consente di dichiarare le classi come readonly, rendendo automaticamente immutabili tutte le loro proprietà.

Esempio:

<?php
readonly class Product {
    public function __construct(
        public string $name,
        public float $price
    ) {}
}

$product = new Product('Laptop', 1200.00);
// $product->price = 1300.00;  // Ошибка, так как класс readonly
?>

2. Deprecazione delle proprietà dinamiche

Le proprietà dinamiche, create al di fuori della dichiarazione della classe, sono ora contrassegnate come obsolete, contribuendo a evitare errori.

Esempio:

<?php
class User {}

$user = new User();
$user->name = 'John';  // Deprecated: dynamic properties are deprecated
?>

3. Supporto per null, false e true nei tipi unione

Ora è possibile specificare null, false e true come tipi nei tipi unione.

Esempio:

<?php
function test(null|false|string $value): string {
    return $value === null ? 'null' : ($value === false ? 'false' : $value);
}

echo test(null);    // Выведет: null
echo test(false);   // Выведет: false
echo test('test');  // Выведет: test
?>

PHP 8.3: i miglioramenti più recenti

PHP 8.3, rilasciato nel novembre 2023, ha proseguito il miglioramento del linguaggio con un focus sul potenziamento della sicurezza e sull’aggiunta di nuove funzionalità utili.

1. json_validate

È stata aggiunta la nuova funzione json_validate, che consente di verificare la validità di una stringa JSON senza decodificarla.

Esempio:

<?php
$json = '{"name": "John", "age": 30}';
$is_valid = json_validate($json);
echo $is_valid ? 'Valid JSON' : 'Invalid JSON';
?>

2. Typed Class Constants

Ora è possibile dichiarare tipi per le costanti all’interno delle classi, rafforzando la tipizzazione.

Esempio:

<?php
class Config {
    public const string NAME = 'Application';
}

echo Config::NAME;  // Выведет: Application
?>

Conclusione

PHP 8.0 e le versioni successive hanno introdotto numerosi miglioramenti che hanno aumentato significativamente le prestazioni e l’espressività del linguaggio. Dalla compilazione JIT e dalle novità come match, i tipi unione e le fiber, fino agli ultimi miglioramenti di PHP 8.3, il linguaggio continua a evolversi e ad adattarsi ai requisiti delle moderne applicazioni web, rimanendo uno strumento chiave per milioni di sviluppatori in tutto il mondo.

Ho un’ottima notizia per tutti i miei iscritti! 🎉 Al momento del pagamento dei prodotti JetBrains potete utilizzare lo speciale codice promozionale “Asgru24” e ottenere uno sconto del 25% su qualsiasi prodotto! Non perdete l’occasione di risparmiare sui migliori strumenti per lo sviluppo.


👍
❤️
😂
😮
😢
😡
🤔
👏
🔥
🥳
😎
👎
🎉
🤯
🚀
₿
Ξ
Ł
Ð
🌕