summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Examples/Globals/globals.cpp3
-rw-r--r--Examples/Globals/globals.php12
-rw-r--r--include/hashmember.h27
3 files changed, 40 insertions, 2 deletions
diff --git a/Examples/Globals/globals.cpp b/Examples/Globals/globals.cpp
index 9f19c43..2370a8a 100644
--- a/Examples/Globals/globals.cpp
+++ b/Examples/Globals/globals.cpp
@@ -41,6 +41,9 @@ Php::Value process_globals()
// and increment it
Php::globals["c"]["member"] += 77;
+ // change value e
+ Php::globals["e"] = Php::globals["e"][0]("hello");
+
// if a global variable holds a function, we can call it
return Php::globals["d"](1,2,3);
}
diff --git a/Examples/Globals/globals.php b/Examples/Globals/globals.php
index 36febf6..c5a3a19 100644
--- a/Examples/Globals/globals.php
+++ b/Examples/Globals/globals.php
@@ -12,6 +12,14 @@ $d = function($a,$b,$c) {
return $a+$b+$c;
};
+// fun global var
+$e = array(
+ function($a) {
+ return $a;
+ }
+);
+
+
// call the C++ function that will do something
$d = process_globals();
@@ -21,9 +29,11 @@ echo("a = $a\n");
// the variable $b should not be 11
echo("b = $b\n");
-// $c should be an array
+// $c should be an array with value 200
echo("c['member'] = ".$c['member']."\n");
// $d is overwritten and now is 6
echo("d = $d\n");
+// e should be replaced by a string
+echo("e = $e\n"); \ No newline at end of file
diff --git a/include/hashmember.h b/include/hashmember.h
index 9c04c46..a61865c 100644
--- a/include/hashmember.h
+++ b/include/hashmember.h
@@ -315,7 +315,32 @@ public:
Value operator%(const std::string &value) { return this->value() % value; }
Value operator%(const char *value) { return this->value() % value; }
Value operator%(double value) { return this->value() % value; }
-
+
+ /**
+ * Handle calls to the hash member
+ * @param param0
+ * @param param1
+ * @param param2
+ * @param param3
+ * @param param4
+ * @param param5
+ * @param param6
+ * @param param7
+ * @param param8
+ * @param param9
+ * @return Value
+ */
+ Value operator()() { return value()(); }
+ Value operator()(Value param0) { return value()(param0); }
+ Value operator()(Value param0, Value param1) { return value()(param0, param1); }
+ Value operator()(Value param0, Value param1, Value param2) { return value()(param0, param1, param2); }
+ Value operator()(Value param0, Value param1, Value param2, Value param3) { return value()(param0, param1, param2, param3); }
+ Value operator()(Value param0, Value param1, Value param2, Value param3, Value param4) { return value()(param0, param1, param2, param3, param4); }
+ Value operator()(Value param0, Value param1, Value param2, Value param3, Value param4, Value param5) { return value()(param0, param1, param2, param3, param4, param5); }
+ Value operator()(Value param0, Value param1, Value param2, Value param3, Value param4, Value param5, Value param6) { return value()(param0, param1, param2, param3, param4, param5, param6); }
+ Value operator()(Value param0, Value param1, Value param2, Value param3, Value param4, Value param5, Value param6, Value param7) { return value()(param0, param1, param2, param3, param4, param5, param6, param7); }
+ Value operator()(Value param0, Value param1, Value param2, Value param3, Value param4, Value param5, Value param6, Value param7, Value param8) { return value()(param0, param1, param2, param3, param4, param5, param6, param7, param8); }
+ Value operator()(Value param0, Value param1, Value param2, Value param3, Value param4, Value param5, Value param6, Value param7, Value param8, Value param9) { return value()(param0, param1, param2, param3, param4, param5, param6, param7, param8, param9); }
private:
/**