kphp icon indicating copy to clipboard operation
kphp copied to clipboard

PHP 7

Open Tsygankov-Slava opened this issue 1 year ago • 0 comments

PHP 7.x added a lot of different things and changed a lot of behaviors. This issue is tracking the status of PHP 7 implementation in KPHP.

The following emoji will be used to denote the task status:

  • :high_brightness: — high priority
  • :low_brightness: — low priority
  • :small_orange_diamond: — breaks backward compatibility
  • :small_red_triangle: — will not be changed in KPHP
  • :hourglass_flowing_sand: — syntax is supported at the parser level
  • :hammer: - in progress

PHP 7

Added

New syntax

  • [x] Null Coalesce Operator (RFC)
  • [x] Combined Comparison (Spaceship) Operator $a <=> $b (RFC)
  • [x] Group Use Declarations use name\space\{A, B, C as c} (RFC)
  • [x] New types of function/method parameters int, float, bool (RFC)
  • [x] Types of function/method return int, float, bool, array (RFC)
  • [ ] Anonymous Classes $class = new class{} (RFC) | :hammer: #273
  • [ ] :hourglass_flowing_sand: Generator Return Expressions yield ... return 99 (RFC) | :hammer:
  • [ ] :hourglass_flowing_sand: Generator Delegation yield from func() (RFC) | :hammer:

Other

  • [x] Array in define define( 'FOO', [1,2] ) (RFC)

Changed

  • [x] Fix "foreach" behavior (RFC)

PHP 7.1

Added

New syntax

  • [x] Nullable type ?int (RFC)
  • [x] Return type void (RFC)
  • [x] Square bracket syntax for array destructuring assignment ['key'=>$var] = ['key'=>'Значение'] (RFC)
  • [x] Key support in list() list( 'id'=>$id ) = $data (RFC)
  • [ ] :hourglass_flowing_sand: New pseudo-type iterable (RFC) | :hammer:
  • [x] Generalize support of negative string offsets$string[-1] (RFC)
  • [ ] :hourglass_flowing_sand: Catching Multiple Exception Types catch (First | Second $e) (RFC) | :hammer:

Other

  • [ ] New static Closure method Closure::fromCallable() (RFC)
  • [x] Scope of constants in classes private const (RFC)

PHP 7.2

Added

New syntax

  • [x] Trailing Commas In List Syntax (RFC)

PHP 7.3

Added

New syntax

  • [ ] :hourglass_flowing_sand: Links in list list( &$a ) (RFC) | :hammer:

Other

  • [ ] is_countable() (RFC)
  • [x] array_(key|value)_(first|last)() (RFC && RFC)

Changed

  • [x] Flexible Heredoc and Nowdoc Syntaxes (RFC)

PHP 7.4

Added

New syntax

  • [x] Spread Operator in Array Expression [ ...$arr ] (RFC)
  • [x] Null Coalescing Assignment Operator ??= (RFC)
  • [x] Numeric Literal Separator 299_792 (RFC)

Other

  • [x] Covariant Returns and Contravariant Parameters (RFC)
  • [x] strip_tags( $str, ['a', 'p'] ) (RFC)
  • [x] __serialize() __unserialize() (RFC && RFC)
  • [ ] Call array_merge without arguments array_merge() (RFC)
  • [ ] Allow throwing exceptions from __toString() (RFC)
  • [ ] Weak References (RFC)

Changed

  • [x] Typed Properties 2.0 public int $id (RFC)
  • [x] Arrow Functions 2.0 fn( $x ) => $x (RFC)

Tsygankov-Slava avatar Jul 15 '23 10:07 Tsygankov-Slava