diff options
author | Olly Betts <olly@survex.com> | 2023-05-08 15:39:53 +1200 |
---|---|---|
committer | Olly Betts <olly@survex.com> | 2023-05-08 15:44:24 +1200 |
commit | 15b739d60e9586025b665c19a85a09280d4ff9ad (patch) | |
tree | 0d7458e7afd14699fc0e3146cb0e46c8452cc0d0 /Examples | |
parent | 281af00437752e4340bfb6c8ca6bb97434bea5a4 (diff) | |
download | swig-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.php | 18 |
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(); |