-
Notifications
You must be signed in to change notification settings - Fork 0
Implementation status
Timm Friebe edited this page Dec 7, 2024
·
55 revisions
The following table gives an overview of the current implementation status. The goal is to have check marks everywhere!
Feature | PHP 7.4 | PHP 8.0 | PHP 8.1 | PHP 8.2 | PHP 8.3 | PHP 8.4 | PHP 8.5 |
---|---|---|---|---|---|---|---|
Future PHP? | |||||||
• Nullable casting | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
• Match without expression | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
• fn with block | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
Hack | |||||||
• Using statement / Disposables | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
• Function types | ✔(1) | ✔(1) | ✔(1) | ✔(1) | ✔(1) | ✔(1) | ✔(1) |
• Array and map types | ✔(1) | ✔(1) | ✔(1) | ✔(1) | ✔(1) | ✔(1) | ✔(1) |
PHP 8.5 | |||||||
• Support Closures in constant expressions | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
PHP 8.4 | |||||||
• Asymmetric visibility | ✔(6) | ✔(6) | ✔(6) | ✔(6) | ✔(6) | native | native |
• new ... without parentheses | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
• Property hooks | ✔(6) | ✔(6) | ✔(6) | ✔(6) | ✔(6) | native | native |
PHP 8.3 | |||||||
• Typed class constants | ✔(1) | ✔(1) | ✔(1) | ✔(1) | native | native | native |
• Marking overridden methods | ✔ | ✔ | ✔ | ✔ | native | native | native |
• Dynamic class constant fetch | ✔ | ✔ | ✔ | ✔ | native | native | native |
• Arbitrary static variable initializers | ✔ | ✔ | ✔ | native | native | native | |
PHP 8.2 | |||||||
• True type | ✔(5) | ✔(5) | ✔(5) | native | native | native | native |
• False type | ✔(5) | ✔(5) | ✔(5) | native | native | native | native |
• Null type | ✔(1) | ✔(1) | ✔(1) | native | native | native | native |
• Readonly classes | ✔ | ✔ | ✔ | native | native | native | native |
PHP 8.1 | |||||||
• Array unpacking with string keys | ✔ | ✔ | native | native | native | native | native |
• Readonly properties | ✔ | ✔ | native | native | native | native | native |
• Pure intersection types | ✔(1) | ✔(1) | native | native | native | native | native |
• First-class callable syntax | ✔ | ✔ | native | native | native | native | native |
• Never return type | ✔(4) | ✔(4) | native | native | native | native | native |
• New in initializers | ✔(3) | ✔(3) | ✔(3) | ✔(3) | ✔(3) | ✔(3) | ✔(3) |
• Enumerations | ✔ | ✔ | native | native | native | native | native |
• Octal integer literal notation | ✔ | ✔ | native | native | native | native | native |
PHP 8.0 | |||||||
• Static return type | native | native | native | native | native | native | |
• Match expression | ✔ | native | native | native | native | native | native |
• Named Arguments | ✔(2) | native | native | native | native | native | native |
• Mixed type | ✔(1) | native | native | native | native | native | native |
• Attributes / Annotations | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
• Null-safe instance operator | ✔ | native | native | native | native | native | native |
• Constructor argument promotion | ✔ | native | native | native | native | native | native |
• Throw expressions | ✔ | native | native | native | native | native | native |
• ::class on objects | ✔ | native | native | native | native | native | native |
• Union types | ✔(1) | native | native | native | native | native | native |
• Arbitrary expression support for new | ✔ | native | native | native | native | native | native |
PHP 7.4 | |||||||
• Spread Operator in Array Expression | native | native | native | native | native | native | native |
• Numeric Literal Separator | native | native | native | native | native | native | native |
• Arrow functions | native | native | native | native | native | native | native |
• Property types | native | native | native | native | native | native | native |
Notes:
- Currently unchecked.
- Only in the correct order.
- Except for class constants.
- Emitted as
void
. - True and false types emitted as
bool
. - Limited in inheritance due to being emulated, see xp-framework/compiler#166