summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorEmiel Bruijntjes <emiel.bruijntjes@copernica.com>2014-03-11 14:14:12 +0100
committerEmiel Bruijntjes <emiel.bruijntjes@copernica.com>2014-03-11 14:14:12 +0100
commitfc5c9305507f8eb899070b0d6d72ddb27c3bfc0f (patch)
tree59228bf56f74a8be1179c3cc45c25efcfda2295d /include
parentcdf237fb05c396d258c2c82a441a2f9b4deff282 (diff)
implemented __call() function
Diffstat (limited to 'include')
-rw-r--r--include/base.h13
-rw-r--r--include/classbase.h19
2 files changed, 32 insertions, 0 deletions
diff --git a/include/base.h b/include/base.h
index d944e3c..7e33d8d 100644
--- a/include/base.h
+++ b/include/base.h
@@ -155,6 +155,19 @@ public:
*/
virtual void __unset(const Php::Value &key);
+ /**
+ * Call a method
+ *
+ * This method is called when a method is called from the PHP script that
+ * was not explicitly defined. You can use this to catch variable method
+ * names, or to support all thinkable method names.
+ *
+ * @param method Name of the method that was called
+ * @param params The parameters that were passed to the function
+ * @return Value The return value
+ */
+ virtual Value __call(const char *method, Parameters &params);
+
private:
/**
diff --git a/include/classbase.h b/include/classbase.h
index 8bde58c..f0fe37b 100644
--- a/include/classbase.h
+++ b/include/classbase.h
@@ -20,6 +20,7 @@
struct _zend_object_value;
struct _zend_object_handlers;
struct _zend_class_entry;
+union _zend_function;
/**
* Set up namespace
@@ -338,6 +339,24 @@ private:
static void unsetProperty(struct _zval_struct *object, struct _zval_struct *member);
/**
+ * Method that is called when a undefined method is invoked
+ * @param method
+ * @param ht
+ * @param return_value
+ * @param return_value_ptr
+ * @param this_ptr
+ * @param return_value_used
+ * @param tsrm_ls
+ * @return integer
+ */
+ static int callMethod(const char *method, int ht, struct _zval_struct *return_value, struct _zval_struct **return_value_ptr, struct _zval_struct *this_ptr, int return_value_used);
+ static int callMethod(char *method, int ht, struct _zval_struct *return_value, struct _zval_struct **return_value_ptr, struct _zval_struct *this_ptr, int return_value_used);
+
+
+ static union _zend_function *getMethod(struct _zval_struct **object_ptr, char *method, int method_len, const struct _zend_literal *key);
+ static union _zend_function *getMethod(struct _zval_struct **object_ptr, char *method, int method_len);
+
+ /**
* Name of the class
* @var string
*/