promotion.phpt 619 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. --TEST--
  2. Promoted readonly property
  3. --FILE--
  4. <?php
  5. class Point {
  6. public function __construct(
  7. public readonly float $x = 0.0,
  8. public readonly float $y = 0.0,
  9. public readonly float $z = 0.0,
  10. ) {}
  11. }
  12. var_dump(new Point);
  13. $point = new Point(1.0, 2.0, 3.0);
  14. try {
  15. $point->x = 4.0;
  16. } catch (Error $e) {
  17. echo $e->getMessage(), "\n";
  18. }
  19. var_dump($point);
  20. ?>
  21. --EXPECT--
  22. object(Point)#1 (3) {
  23. ["x"]=>
  24. float(0)
  25. ["y"]=>
  26. float(0)
  27. ["z"]=>
  28. float(0)
  29. }
  30. Cannot modify readonly property Point::$x
  31. object(Point)#1 (3) {
  32. ["x"]=>
  33. float(1)
  34. ["y"]=>
  35. float(2)
  36. ["z"]=>
  37. float(3)
  38. }