aboutsummaryrefslogtreecommitdiff
path: root/Examples/test-suite/php/cpp17_director_string_view_runme.php
diff options
context:
space:
mode:
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.php42
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();