new_named_params.phpt 767 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. --TEST--
  2. Named params in new in const expr
  3. --FILE--
  4. <?php
  5. class Vec {
  6. public function __construct(public float $x, public float $y, public float $z) {}
  7. }
  8. static $a = new Vec(x: 0.0, y: 1.0, z: 2.0);
  9. var_dump($a);
  10. static $b = new Vec(z: 0.0, y: 1.0, x: 2.0);
  11. var_dump($b);
  12. static $c = new Vec(0.0, z: 1.0, y: 2.0);
  13. var_dump($c);
  14. try {
  15. eval('static $d = new Vec(x: 0.0, x: 1.0);');
  16. } catch (Error $e) {
  17. echo $e->getMessage(), "\n";
  18. }
  19. ?>
  20. --EXPECT--
  21. object(Vec)#1 (3) {
  22. ["x"]=>
  23. float(0)
  24. ["y"]=>
  25. float(1)
  26. ["z"]=>
  27. float(2)
  28. }
  29. object(Vec)#2 (3) {
  30. ["x"]=>
  31. float(2)
  32. ["y"]=>
  33. float(1)
  34. ["z"]=>
  35. float(0)
  36. }
  37. object(Vec)#3 (3) {
  38. ["x"]=>
  39. float(0)
  40. ["y"]=>
  41. float(2)
  42. ["z"]=>
  43. float(1)
  44. }
  45. Named parameter $x overwrites previous argument