033.phpt 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. --TEST--
  2. Test nullsafe operator in encaps vars
  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?->foo}");
  14. var_dump("{$null?->bar()}");
  15. var_dump("$null?->foo");
  16. var_dump("$null?->bar()");
  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("$foo?->bar");
  26. var_dump("$foo?->baz");
  27. var_dump("$foo?->qux()");
  28. try {
  29. var_dump("$foo?->quux()");
  30. } catch (Throwable $e) {
  31. var_dump($e->getMessage());
  32. }
  33. ?>
  34. --EXPECTF--
  35. string(0) ""
  36. string(0) ""
  37. string(0) ""
  38. string(2) "()"
  39. string(3) "bar"
  40. Warning: Undefined property: Foo::$baz in %s.php on line 20
  41. string(0) ""
  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. string(0) ""
  47. Warning: Undefined property: Foo::$qux in %s.php on line 30
  48. string(2) "()"
  49. Warning: Undefined property: Foo::$quux in %s.php on line 32
  50. string(2) "()"