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

Historia de PHP: desde su creación hasta la versión actual 8.3

PHP es uno de los lenguajes de programación más populares para el desarrollo web. Desde su creación en 1994, ha recorrido un largo camino, pasando de ser una sencilla herramienta para páginas web dinámicas a un lenguaje de programación potente, de alto rendimiento y versátil. Veamos las principales etapas de su evolución y analicemos en detalle los cambios clave de las versiones 8.0, 8.1, 8.2 y 8.3.


Etapas de evolución de PHP

1995: Nacimiento de PHP/FI 1.0

PHP fue creado por el programador danés Rasmus Lerdorf en 1994 como un conjunto de scripts de Perl para rastrear las visitas a su currículum en un sitio web. En 1995 lanzó la primera versión de PHP/FI (Personal Home Page/Forms Interpreter), que admitía formularios HTML e interacción con bases de datos.

1998: PHP 3.0 y la revolución del lenguaje

Con la ayuda de Zeev Suraski y Andi Gutmans, PHP fue reescrito por completo, lo que llevó al lanzamiento de PHP 3.0 en 1998. Incluía el nuevo motor Zend Engine, que mejoró significativamente el rendimiento y la flexibilidad del lenguaje. PHP 3 se convirtió en la primera versión ampliamente utilizada del lenguaje compatible con la programación orientada a objetos.

2000: PHP 4.0 y la aparición de Zend Engine

PHP 4 con Zend Engine 1.0 apareció en 2000, ofreciendo un mejor rendimiento y compatibilidad con sesiones, lo que hizo que PHP fuera más adecuado para crear aplicaciones web dinámicas complejas.

2004: PHP 5.0 y una nueva era de la POO

PHP 5, lanzado en 2004, introdujo soporte completo para la programación orientada a objetos, una interacción mejorada con bases de datos mediante PDO (PHP Data Objects) y un nuevo modelo de gestión de excepciones.

2015: PHP 7.0 y una mejora significativa del rendimiento

En 2015, PHP 7.0 presentó una nueva generación de Zend Engine 3.0, lo que duplicó la velocidad de ejecución del código e incorporó soporte para la tipificación de argumentos de funciones y valores de retorno.


PHP 8: Principales novedades

PHP 8.0, lanzado en noviembre de 2020, supuso un importante avance gracias a numerosas funciones y mejoras nuevas que hicieron el lenguaje más cómodo, eficiente y expresivo. Las principales novedades incluyen:

1. Compilación JIT (Just-in-time)

El compilador JIT permite compilar dinámicamente parte del bytecode en código máquina durante la ejecución. Esto resulta especialmente útil para tareas intensivas desde el punto de vista computacional, como los cálculos científicos o el aprendizaje automático. Sin embargo, JIT tiene un impacto menor en las aplicaciones web convencionales.

Ejemplo:

<?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. Expresión Match (coincidencia de patrones)

match es una versión mejorada de la instrucción switch, que utiliza tipificación estricta, no requiere instrucciones break y puede devolver un resultado directamente.

Ejemplo de uso de match:

<?php
$status = 404;

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

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

3. Argumentos con nombre

Los argumentos con nombre permiten pasar parámetros de funciones por nombre, lo que hace que las llamadas a funciones sean más claras y cómodas.

Ejemplo:

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

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

4. Union Types (tipos de unión)

Los tipos de unión permiten especificar varios tipos para los argumentos y los valores de retorno.

Ejemplo:

<?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

Esta novedad permite asignar automáticamente propiedades del objeto a partir de los argumentos del constructor, lo que reduce el código.

Ejemplo:

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

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

6. Errores para punteros incorrectos

PHP 8 genera errores al acceder a claves de arrays o propiedades de objetos inexistentes, lo que aumenta la fiabilidad del código.

Ejemplo:

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

PHP 8.1: Novedades importantes

PHP 8.1, lanzado en noviembre de 2021, añadió muchas funciones y mejoras importantes, como enumeraciones, fibras y propiedades de solo lectura.

1. Enums (enumeraciones)

Las enumeraciones (enum) permiten definir un conjunto fijo de valores que se utilizan en el código.

Ejemplo:

<?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. Fibras (Fibers)

Las fibras incorporan la posibilidad de crear hilos cooperativos en PHP, lo que simplifica la programación asíncrona.

Ejemplo:

<?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

Las propiedades readonly solo pueden inicializarse al crear el objeto, tras lo cual pasan a ser inmutables.

Ejemplo:

<?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: Continuación de las mejoras

PHP 8.2, lanzado en diciembre de 2022, incorporó mejoras adicionales de sintaxis y nuevas funcionalidades.

1. Clases readonly

PHP 8.2 permite declarar clases como readonly, lo que hace que todas sus propiedades sean inmutables automáticamente.

Ejemplo:

<?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. Desuso de las propiedades dinámicas

Las propiedades dinámicas creadas fuera de la declaración de clase ahora se marcan como obsoletas, lo que ayuda a evitar errores.

Ejemplo:

<?php
class User {}

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

3. Compatibilidad con null, false y true en tipos de unión

Ahora se pueden especificar null, false y true como tipos en los tipos de unión.

Ejemplo:

<?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: Las mejoras más recientes

PHP 8.3, lanzado en noviembre de 2023, continuó mejorando el lenguaje con un enfoque en aumentar la seguridad y añadir nuevas funciones útiles.

1. json_validate

Se añadió la nueva función json_validate, que permite comprobar la validez de una cadena JSON sin decodificarla.

Ejemplo:

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

2. Typed Class Constants

Ahora es posible declarar tipos para las constantes dentro de las clases, lo que refuerza la tipificación.

Ejemplo:

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

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

Conclusión

PHP 8.0 y las versiones posteriores aportaron muchas mejoras que aumentaron significativamente el rendimiento y la expresividad del lenguaje. Desde la compilación JIT y novedades como match, los tipos de unión y las fibras, hasta las mejoras más recientes de PHP 8.3, el lenguaje continúa evolucionando y adaptándose a los requisitos de las aplicaciones web modernas, manteniéndose como una herramienta clave para millones de desarrolladores de todo el mundo.

¡Tengo excelentes noticias para todos mis suscriptores! 🎉 Al pagar productos de JetBrains, pueden utilizar el código promocional especial «Asgru24» y obtener un descuento del 25% en cualquier producto. No pierdan la oportunidad de ahorrar en las mejores herramientas de desarrollo.