diff options
Diffstat (limited to 'Examples/test-suite/php/cpp17_director_string_view_runme.php')
-rw-r--r-- | Examples/test-suite/php/cpp17_director_string_view_runme.php | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/Examples/test-suite/php/cpp17_director_string_view_runme.php b/Examples/test-suite/php/cpp17_director_string_view_runme.php new file mode 100644 index 000000000..44a4b7b69 --- /dev/null +++ b/Examples/test-suite/php/cpp17_director_string_view_runme.php @@ -0,0 +1,42 @@ +<?php + +require "tests.php"; + +// No new functions +check::functions(array()); +// New classes +check::classes(array('A')); +// No new vars +check::globals(array()); + +class B extends A { + public $smem; + + private $cached_string; + + function get_first() { + // Since std::string_view contains a pointer into a string, the string + // cannot be a temporary in order to avoid undefined behaviour. + $this->cached_string = parent::get_first() . " world!"; + return $this->cached_string; + } + + function process_text($string) { + parent::process_text($string); + $this->smem = "hello"; + } +} + +$b = new B("hello"); + +check::equal($b->get(0), "hello", "get(0) failed"); + +check::equal($b->get_first(), "hello world!", "get_first failed"); + +check::equal($b->call_get_first(), "hello world!", "call_get_first failed"); + +$b->call_process_func(); + +check::equal($b->smem, "hello", "smem failed"); + +check::done(); |