PHP is always evolving, and itβs important to stay up-to-date with the latest features and improvements. This article introduces 20 PHP features you should know as of 2023, each illustrated with a handy code example.
1. str_contains():
Checks if a string is contained in another string.
$sentence = "The quick brown π¦ jumps over the lazy πΆ.";
$word = "π¦";
if (str_contains($sentence, $word)) {
echo "The sentence contains the word π¦.";
}
2. str_starts_with():
Checks if a string starts with a given substring.
$sentence = "π Launching into space!";
if (str_starts_with($sentence, "π")) {
echo "The sentence starts with a rocket emoji!";
}
3. str_ends_with():
Checks if a string ends with a given substring.
$sentence = "It's a beautiful day! βοΈ";
if (str_ends_with($sentence, "βοΈ")) {
echo "The sentence ends with a sun emoji!";
}
4. get_debug_type():
Gets the type of a variable.
$num = 42;
echo get_debug_type($num); // "integer"
5. get_resource_id():
Returns the unique identifier of the given resource.
$file = fopen('test.txt', 'r');
echo get_resource_id($file); // e.g., "7"
6. fdiv():
Division function that includes support for dividing by zero.
$result = fdiv(10, 0); // INF
7. preg_last_error_msg():
Returns a human-readable message for the last PCRE regex execution error.
preg_match('/(/', '');
echo preg_last_error_msg(); // "missing )"
8. array_key_first():
Fetches the first key of an array.
$array = ['π'=>'Apple', 'π'=>'Orange', 'π'=>'Grape'];
echo array_key_first($array); // "π"
9. array_key_last():
Fetches the last key of an array.
$array = ['π'=>'Apple', 'π'=>'Orange', 'π'=>'Grape'];
echo array_key_last($array); // "π"
10. ErrorException::getSeverity():
Gets the severity of the error.
try {
trigger_error("Custom error", E_USER_WARNING);
} catch (ErrorException $e) {
echo $e->getSeverity(); // 512
}
11. Filter Functions:
PHP 8 introduced several new filter functions. Hereβs an example using filter_var
with FILTER_VALIDATE_BOOL
:
var_dump(filter_var('yes', FILTER_VALIDATE_BOOL)); // bool(true)
12. Weak Map:
A new class that holds references to objects, which does not prevent those objects from being garbage collected.
$weakmap = new WeakMap();
$obj = new stdClass();
$weakmap[$obj] = 'Hello, world!';
13. Value Objects:
PHP 8 introduced Constructor Property Promotion, a new syntax for constructing value objects.
class Money {
public function __construct(
public int $amount,
public string $currency
) {}
}
$tenDollars = new Money(10, 'USD');
14. Match Expression:
This is a switch-like statement.
echo match (1) {
0 => 'π«',
1 => 'β
',
default => 'βοΈ',
};
15. Nullsafe Operator:
This new operator (?->) allows null checking when accessing properties or methods.
class User {
public function getAddress(): ?Address {
// returns Address or null
}
}
$user = new User();
$country = $user?->getAddress()?->country; // no error if getAddress() returns null
16. Named Arguments:
This feature allows you to pass in values to a function by specifying the value name.
new Money(amount: 10, currency: 'USD');
17. Attributes:
Also known as annotations in other programming languages.
#[Attribute]
class ExampleAttribute {}
#[ExampleAttribute]
class ExampleClass {}
18. Constructor Property Promotion:
This feature allows the combination of class properties and the constructor into a single declaration.
class Money {
public function __construct(
public int $amount,
public string $currency
) {}
}
19. Union Types:
This feature allows for type declarations that can be one of multiple types.
function print_id(int|string $id): void {
echo 'ID: ' . $id;
}
20. Just In Time Compilation (JIT):
PHP 8 introduces two JIT compilation engines, Tracing JIT and Function JIT.
Note: JIT compilation isnβt a feature you can directly demonstrate with a code snippet, but itβs an important improvement in PHP 8 that can provide significant performance improvements.
Source : https://medium.com/@berastis/20-php-features-you-should-know-in-2023-18d9879f36f2