Home > headlines > Never stopping to move forward, PHP8.1 brings 8 important new changes!

Never stopping to move forward, PHP8.1 brings 8 important new changes!

藏色散人
Release: 2021-11-11 19:17:36
Original
4612 people have browsed it

"php is the best language in the world", it never stops moving forward! The PHP team has currently released PHP 8.1.0 RC 5 version, and the next version will be the sixth and final release candidate (RC 6), which will be released in the near future. Let me introduce to you the 8 important new changes in PHP8.1, let’s take a look first!

1、Enums

enum Status
{
    case draft;
    case published;
    case archived;
    
    public function color(): string
    {
        return match($this) 
        {
            Status::draft => 'grey',   
            Status::published => 'green',   
            Status::archived => 'red',   
        };
    }
}
Copy after login

2、Readonly properties

class PostData
{
    public function __construct(
        public readonly string $title,
        public readonly string $author,
        public readonly string $body,
        public readonly DateTimeImmutable $createdAt,
        public readonly PostState $state,
    ) {}
}
Copy after login

3、New in initializers

class PostStateMachine
{
    public function __construct(
        private State $state = new Draft(),
    ) {
    }
}
Copy after login

4、Fibers, a.k.a. "green threads")

$fiber = new Fiber(function (): void {
    $valueAfterResuming = Fiber::suspend('after suspending');
    
    // … 
});
 
$valueAfterSuspending = $fiber->start();
 
$fiber->resume('after resuming');
Copy after login

5、Array unpacking also supports string keys

$array1 = ["a" => 1];
$array2 = ["b" => 2];
$array = ["a" => 0, ...$array1, ...$array2];
var_dump($array); // ["a" => 1, "b" => 2]
Copy after login

6、First class callables

function foo(int $a, int $b) { /* … */ }
$foo = foo(...);
$foo(a: 1, b: 2);
Copy after login

7、Pure intersection types

function generateSlug(HasTitle&HasId $post) {
    return strtolower($post->getTitle()) . $post->getId();
}
Copy after login

8、New array_is_list function(The new array_is_list function)

$list = ["a", "b", "c"];
array_is_list($list); // true
$notAList = [1 => "a", 2 => "b", 3 => "c"];
array_is_list($notAList); // false
$alsoNotAList = ["a" => "a", "b" => "b", "c" => "c"];
array_is_list($alsoNotAList); // false
Copy after login

This article is a translation, original address: https://stitcher.io/blog/php-81-in-8-code-blocks

Related labels:
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template