PHP 8.1 in 8 code blocks
Written on 2021-11-07
enum Status { case draft; case published; case archived; public function color(): string { return match($this) { Status::draft => 'grey', Status::published => 'green', Status::archived => 'red', }; } }Enums
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, ) {} }Readonly properties
class PostStateMachine { public function __construct( private State $state = new Draft(), ) { } }New in initializers
$fiber = new Fiber(function (): void { $valueAfterResuming = Fiber::suspend('after suspending'); }); $valueAfterSuspending = $fiber->start(); $fiber->resume('after resuming');Fibers, a.k.a. "green threads"
Check out my latest video: DX matters
$array1 = ["a" => 1]; $array2 = ["b" => 2]; $array = ["a" => 0, ...$array1, ...$array2]; var_dump($array);Array unpacking also supports string keys
function foo(int $a, int $b) { } $foo = foo(...); $foo(a: 1, b: 2);First class callables
function generateSlug(HasTitle&HasId $post) { return strtolower($post->getTitle()) . $post->getId(); }Pure intersection types
$list = ["a", "b", "c"]; array_is_list($list); $notAList = [1 => "a", 2 => "b", 3 => "c"]; array_is_list($notAList); $alsoNotAList = ["a" => "a", "b" => "b", "c" => "c"]; array_is_list($alsoNotAList);The new
array_is_list function
Join over 14k subscribers on my mailing list: I write about PHP, programming, and keep you up to date about what's happening on this blog. You can subscribe by sending an email to [email protected].
Things I wish I knew when I started programming
This is my newest book aimed at programmers of any skill level. This book isn't about patterns, principles, or best practices; there's actually barely any code in it. It's about the many things I've learned along the way being a professional programmer, and about the many, many mistakes I made along that way as well. It's what I wish someone would have told me years ago, and I hope it might inspire you.
0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.