summaryrefslogtreecommitdiff
path: root/Examples
diff options
context:
space:
mode:
authorvalmat <ufabiz@gmail.com>2014-03-09 02:09:36 +0600
committervalmat <ufabiz@gmail.com>2014-03-09 02:09:36 +0600
commitd76e1c204a1adcaa2a605ed3041a0f1711c716dc (patch)
treefa8f774486655a4723f652ba9934e16123039347 /Examples
parentb86672080ecd25c8a3103c58cd68812902728631 (diff)
issue #23 : Removed comments and debugging information. Added an example.
Diffstat (limited to 'Examples')
-rw-r--r--Examples/CppClassesInPhp/check_map.php63
-rw-r--r--Examples/CppClassesInPhp/cppclassinphp.cpp18
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 &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);