summaryrefslogtreecommitdiff
path: root/Examples
diff options
context:
space:
mode:
authorOlly Betts <olly@survex.com>2023-05-08 15:39:53 +1200
committerOlly Betts <olly@survex.com>2023-05-08 15:44:24 +1200
commit15b739d60e9586025b665c19a85a09280d4ff9ad (patch)
tree0d7458e7afd14699fc0e3146cb0e46c8452cc0d0 /Examples
parent281af00437752e4340bfb6c8ca6bb97434bea5a4 (diff)
downloadswig-15b739d60e9586025b665c19a85a09280d4ff9ad.tar.gz
[PHP] Wrap method with both static and non-static overloads
We now wrap this as a non-static method in PHP, which means the static form only callable via an object. Previously this case could end up wrapped as static or non-static in PHP. If it was wrapped as static, attempting to call non-static overloaded forms would crash with a segmentation fault. See #2544
Diffstat (limited to 'Examples')
-rw-r--r--Examples/test-suite/php/smart_pointer_static_runme.php18
1 files changed, 18 insertions, 0 deletions
diff --git a/Examples/test-suite/php/smart_pointer_static_runme.php b/Examples/test-suite/php/smart_pointer_static_runme.php
new file mode 100644
index 000000000..71f7a74ee
--- /dev/null
+++ b/Examples/test-suite/php/smart_pointer_static_runme.php
@@ -0,0 +1,18 @@
+<?php
+
+require "tests.php";
+
+check::classes(array("Foo2","MyHandle_Foo2"));
+
+// This doesn't actually test any smart pointer stuff, just that static
+// vs non-static overloading is wrapped suitable (fixed in SWIG 4.2.0).
+//
+// We can't make the same wrapped method both static and non-static in PHP
+// so we make it non-static, and that at least allows the static version
+// to be called via an object.
+$foo2=new Foo2();
+check::classname("foo2",$foo2);
+check::equal($foo2->sum(1,2), 3);
+check::equal($foo2->sum(1,2,3), 6);
+
+check::done();