summaryrefslogtreecommitdiff
path: root/Examples/CppClassesInPhp
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/CppClassesInPhp')
-rw-r--r--Examples/CppClassesInPhp/check_map.php86
-rw-r--r--Examples/CppClassesInPhp/cppclassinphp.cpp18
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 &params)
+ {
+ 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 &params)
{
@@ -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);