PHP 8.4 Release: New Features and Deprecated Functions

By TechGeeta
PHP 8.4 Release: New Features and Deprecated Functions
3 min read

PHP 8.4, set to be released on November 21, 2024, brings several significant updates and changes. This version introduces new features to enhance the language's capabilities and deprecates some older functionalities to promote better coding practices. Here’s an in-depth look at what’s new and deprecated in PHP 8.4.


New Features in PHP 8.4

 

1. Readonly Properties in Traits

Traits in PHP can now declare readonly properties. This feature ensures that properties in traits, once set, cannot be modified, increasing the robustness and predictability of code.

Example:

trait Timestamps {
    public readonly DateTimeImmutable $createdAt;
}
class Post {
    use Timestamps;
    public function __construct() {
        $this->createdAt = new DateTimeImmutable();
    }
}

 

2. Class Instantiation Without Parentheses

PHP 8.4 allows accessing class members directly during instantiation without needing parentheses, making the syntax more concise and readable.

Example:

$request = new Request->withMethod('GET');

 

3. DateTime from Unix Timestamp

A new method createFromTimestamp() has been added to DateTimeImmutable and DateTime, supporting both standard and microsecond Unix timestamps.

Example:

$timestamp = 1633567890;
$date = DateTimeImmutable::createFromTimestamp($timestamp);
echo $date->format('Y-m-d H:i:s'); // Outputs the date and time

 

4. Multi-byte String Functions

PHP 8.4 introduces multi-byte versions of common string functions, enhancing support for non-Latin alphabets.

Example:

$string = "  Multibyte String  ";
echo mb_trim($string); // Removes whitespace from both ends

Deprecated Features in PHP 8.4

 

1. strtok() Function

The strtok() function, used for tokenizing strings, is deprecated due to inefficiencies in modern string handling. Developers are encouraged to use more efficient alternatives.

Deprecated Example:

$str = "Hello world";
$token = strtok($str, " ");
while ($token !== false) {
    echo $token . "\n";
    $token = strtok(" ");
}

Recommended Replacement:

$str = "Hello world";
$tokens = explode(" ", $str);
foreach ($tokens as $token) {
    echo $token . "\n";
}

 

2. Locale-Dependent Case Conversion Functions

Functions like strtolower() and strtoupper() that rely on the current locale are deprecated. Instead, multi-byte string functions are recommended.

Deprecated Example:

$upper = strtoupper("hello");

Recommended Replacement:

$upper = mb_strtoupper("hello");

 

3. Dynamic Properties

Dynamic properties, allowing properties to be added to objects at runtime, are deprecated to encourage better-defined class structures.

Deprecated Example:

class User {}
$user = new User();
$user->name = "John"; // Adding a property dynamically

Recommended Replacement:

class User {
    public string $name;
}
$user = new User();
$user->name = "John";

 


 

Conclusion!

PHP 8.4 continues to evolve the language with new features that enhance code readability, performance, and security. By deprecating older, less efficient functionalities, PHP encourages developers to adopt more robust coding practices. These updates ensure that PHP remains a powerful and modern tool for web development.

For more details on PHP 8.4, visit the official PHP documentation and PHP Watch

Stay Updated with Our Latest News

Subscribe to our newsletter and be the first to know about our latest projects, blog posts, and industry insights.