diff options
Diffstat (limited to 'Examples/CppClassesInPhp')
-rw-r--r-- | Examples/CppClassesInPhp/check_map.php | 86 | ||||
-rw-r--r-- | Examples/CppClassesInPhp/cppclassinphp.cpp | 18 |
2 files changed, 104 insertions, 0 deletions
diff --git a/Examples/CppClassesInPhp/check_map.php b/Examples/CppClassesInPhp/check_map.php new file mode 100644 index 0000000..2103bac --- /dev/null +++ b/Examples/CppClassesInPhp/check_map.php @@ -0,0 +1,86 @@ +<?php + +/** + * For functionality testing. You can then delete. + * + */ + +class cl0 { + public $cl0_float = 3.14; + public $cl0_str1 = 'public str1'; + private $cl0_str2 = 'private str2'; + protected $cl0_str3 = 'protected str3'; +} + +class cl1 extends cl0 implements arrayaccess +{ + static $cl1_static = 'static prop'; + + const CL1_CONST = 'const prop'; + + public $cl1_num = 45615; + public $cl1_str = "Public Prop"; + + private $cl1_pp1 = "Private Prop1"; + private $cl1_pp2 = "Private Prop2"; + + protected $cl1_prp1 = "Protected Prop1"; + protected $cl1_prp2 = "Protected Prop2"; + + public function fn($a) { + echo $a; + } + + function __toString() { + return 'I\'m class cl1'; + } + + public function offsetSet($offset, $value) { + if (!is_null($offset)) { + $this->$offset = $value; + } + } + public function offsetExists($offset) { + return isset($this->$offset); + } + public function offsetUnset($offset) { + unset($this->$offset); + } + public function offsetGet($offset) { + return isset($this->$offset) ? $this->$offset : null; + } + +} + +class emptyClass {} + +$arr = array( + 'qwe' => 'qweqweqweqw', + 'asd' => 'Привет!', // check UTF-8 chars + 'zxccvx' => 'sdfsecvyh6bug6yfty', + 1=>2, + '2'=>2, + 44, + new cl1(), + '%'=>'%$%$%', + ); + +$arr = new cl1(); + +$arr[5] = 55; +$arr['strstr'] = 'strstrstrstrstrstr'; + +//$arr = new emptyClass(); +//$arr = array(); + + +$q = new MyClass(); + +var_export($arr); + +//$q->loopArray($arr); + +// Works for objects and arrays +$q->loopObject($arr); +//$q->loopObject($arr); + 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); |