From d76e1c204a1adcaa2a605ed3041a0f1711c716dc Mon Sep 17 00:00:00 2001 From: valmat Date: Sun, 9 Mar 2014 02:09:36 +0600 Subject: issue #23 : Removed comments and debugging information. Added an example. --- Examples/CppClassesInPhp/check_map.php | 63 ++++++++++++++++++++++++++++++ Examples/CppClassesInPhp/cppclassinphp.cpp | 18 +++++++++ 2 files changed, 81 insertions(+) create mode 100644 Examples/CppClassesInPhp/check_map.php (limited to 'Examples') 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 @@ + '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); -- cgit v1.2.3