summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDreamsxin <dreamsxin@126.com>2015-06-04 14:45:32 +0800
committerDreamsxin <dreamsxin@126.com>2015-06-04 14:45:32 +0800
commit31c892ce1af0664edb48a64c8727bd71d1380555 (patch)
tree1d5cc5d0494a5e70b6fef7e10704ad04087c21be
parentf107c1522db3db81bb0ef1031250891432eaa453 (diff)
Allow interfaces define static methods
-rw-r--r--include/interface.h16
-rw-r--r--zend/classimpl.h2
2 files changed, 17 insertions, 1 deletions
diff --git a/include/interface.h b/include/interface.h
index ecb011e..5b15016 100644
--- a/include/interface.h
+++ b/include/interface.h
@@ -43,6 +43,22 @@ public:
}
/**
+ * Add a - of course abstract - method to the interface
+ * @param name Name of the method
+ * @param flags Optional flags
+ * @param arguments Optional description of the arguments
+ * @return Interface Same object to allow chaining
+ */
+ Interface &method(const char *name, int flags, const Arguments &arguments = {})
+ {
+ // call base
+ ClassBase::method(name, flags, arguments);
+
+ // return self
+ return *this;
+ }
+
+ /**
* Extends exisiting PHP interface
*
* Note that the interface that you supply must already exist! Therefore
diff --git a/zend/classimpl.h b/zend/classimpl.h
index 5d0ab60..bd385be 100644
--- a/zend/classimpl.h
+++ b/zend/classimpl.h
@@ -414,7 +414,7 @@ public:
* @param flags Optional flags (like public or protected)
* @param args Description of the supported arguments
*/
- void method(const char *name, int flags=0, const Arguments &args = {}) { _methods.push_back(std::make_shared<Method>(name, (flags & (MethodModifiers | Static)) | Abstract , args)); }
+ void method(const char *name, int flags=0, const Arguments &args = {}) { _methods.push_back(std::make_shared<Method>(name, (flags & (MethodModifiers | Static | Abstract)) , args)); }
/**
* Add a property to the class