diff options
Diffstat (limited to 'Examples')
-rw-r--r-- | Examples/CppClassesInPhp/check_map.php | 63 | ||||
-rw-r--r-- | Examples/CppClassesInPhp/cppclassinphp.cpp | 18 |
2 files changed, 81 insertions, 0 deletions
diff --git a/Examples/CppClassesInPhp/check_map.php b/Examples/CppClassesInPhp/check_map.php new file mode 100644 index 0000000..cdd5345 --- /dev/null +++ b/Examples/CppClassesInPhp/check_map.php @@ -0,0 +1,63 @@ +<?php + +/** + * For functionality testing. You can then delete. + * + */ + +class cl1 { + public $qwe = 45615; + public $asd = "asdasdasd"; + public $zxcv = "Привет!"; // check UTF-8 chars + public function fn($a) { + echo $a; + } + function __destruct(){ + echo 'cl1::__destruct'; + } + + function __toString() { + return 'I\'m class cl1'; + } + +} + +class emptyClass {} + +$arr = array( + 'qwe' => 'qweqweqweqw', + 'asd' => 'Привет!', // check UTF-8 chars + 'zxccvx' => 'sdfsecvyh6bug6yfty', + 1=>2, + '2'=>2, + 44, + new cl1(), + '%'=>'%$%$%', + ); +//$arr = array(5,17,'qwe' => 'qweqweqweqw',4=>88,'17'=>'170','1'=>4, new cl1()); +//$arr = array(3.14,2.7,11,0,500); +//$arr = array(); +//$arr = new cl1(); + +$q = new MyClass(); + +var_export($arr); + +//$q->loopArray($arr); + +// Works for objects and arrays +$q->loopObject($arr); + +$q->loopObject(new emptyClass()); + + +/* +// Validation removal (i.e. do I need to use zval_add_ref(value);) +echo "\nunset(\$arr):"; +unset($arr); +echo "\nunset(\$q):"; +unset($q); +*/ + + + diff --git a/Examples/CppClassesInPhp/cppclassinphp.cpp b/Examples/CppClassesInPhp/cppclassinphp.cpp index 400d942..9a4e130 100644 --- a/Examples/CppClassesInPhp/cppclassinphp.cpp +++ b/Examples/CppClassesInPhp/cppclassinphp.cpp @@ -51,6 +51,17 @@ public: { return 33; } + + void loop(Php::Parameters ¶ms) + { + std::cout << "Array/Object contains " << params[0].size() << " items" << std::endl; + auto m = params[0].mapValue(); + + std::cout << "map contains " << m.size() << " items" << std::endl; + for(auto &i: m) { + std::cout << "key: " << i.first << " \t\tval: " << i.second << std::endl; + } + } Php::Value myMethod(Php::Parameters ¶ms) { @@ -124,6 +135,13 @@ extern "C" customClass.method("myMethod2", &MyCustomClass::myMethod); customClass.property("property1", "prop1"); customClass.property("property2", "prop2", Php::Protected); + + customClass.method("loopArray", &MyCustomClass::loop, { + Php::ByVal("arr", Php::Type::Array) + }); + customClass.method("loopObject", &MyCustomClass::loop, { + Php::ByVal("obj", Php::Type::Object) + }); // add the class to the extension extension.add(customClass); |