003.phpt 957 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. --TEST--
  2. Test basic nullsafe property fetching
  3. --FILE--
  4. <?php
  5. class Foo {
  6. public $bar = 'bar';
  7. function qux() {
  8. return 'qux';
  9. }
  10. }
  11. $null = null;
  12. $foo = new Foo();
  13. var_dump(null?->bar);
  14. var_dump(null?->baz);
  15. var_dump(null?->qux());
  16. var_dump(null?->quux());
  17. var_dump($foo?->bar);
  18. var_dump($foo?->baz);
  19. var_dump($foo?->qux());
  20. try {
  21. var_dump($foo?->quux());
  22. } catch (Throwable $e) {
  23. var_dump($e->getMessage());
  24. }
  25. var_dump((new Foo)?->bar);
  26. var_dump((new Foo)?->baz);
  27. var_dump((new Foo)?->qux());
  28. try {
  29. var_dump((new Foo)?->quux());
  30. } catch (Throwable $e) {
  31. var_dump($e->getMessage());
  32. }
  33. ?>
  34. --EXPECTF--
  35. NULL
  36. NULL
  37. NULL
  38. NULL
  39. string(3) "bar"
  40. Warning: Undefined property: Foo::$baz in %s.php on line 20
  41. NULL
  42. string(3) "qux"
  43. string(36) "Call to undefined method Foo::quux()"
  44. string(3) "bar"
  45. Warning: Undefined property: Foo::$baz in %s.php on line 29
  46. NULL
  47. string(3) "qux"
  48. string(36) "Call to undefined method Foo::quux()"