diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/class.h | 27 | ||||
-rw-r--r-- | include/classbase.h | 6 | ||||
-rw-r--r-- | include/constant.h | 20 |
3 files changed, 52 insertions, 1 deletions
diff --git a/include/class.h b/include/class.h index 2c875fa..76ac114 100644 --- a/include/class.h +++ b/include/class.h @@ -142,7 +142,7 @@ public: * hidden) * * @param name Name of the property - * @param value Actual property value + * @param value Actual default property value * @param flags Optional flags * @return Class Same object to allow chaining */ @@ -157,6 +157,31 @@ public: Class<T> &property(const char *name, double value, int flags = Public) { ClassBase::property(name, value, flags); return *this; } /** + * Create a class constant + * + * The class constant can be used in a php script as "ClassName::CONSTANT_NAME". + * It is a good programming practive to only use uppercase characters for + * constants. + * + * This is an alias for adding a class property with the "Php::Const" flag. + * + * @param name Name of the constant + * @param value Constant value + * @return Class Same object to allow chaining + */ + template <typename V> + Class<T> &constant(const char *name, V value) { return property(name, value, Const); } + + /** + * Add a Php::Constant to a class to use it as a class constant + * + * @param constant The constant to add + * @return Class Same object to allow chaining + */ + Class<T> &constant(const Constant &constant) { constant.addTo(*this); return *this; } + Class<T> &add(const Constant &constant) { constant.addTo(*this); return *this; } + + /** * Properties as methods * * This is a smarter way for adding properties to a class. You can define diff --git a/include/classbase.h b/include/classbase.h index 1129298..a70157f 100644 --- a/include/classbase.h +++ b/include/classbase.h @@ -273,6 +273,12 @@ private: * @var std::shared_ptr<ClassImpl> */ std::shared_ptr<ClassImpl> _impl; + + /** + * Constants can be used as class properties, and need access to private + * and protected methods + */ + friend class ConstantImpl; }; /** diff --git a/include/constant.h b/include/constant.h index 619ce46..36b3417 100644 --- a/include/constant.h +++ b/include/constant.h @@ -47,6 +47,26 @@ public: * Destructor */ virtual ~Constant() {} + + /** + * Add the constant to a class + * + * You normally do not have to call this method yourself. You can simply + * do one of the following method calls to create class constants: + * + * myclass.property("MY_CONSTANT", "value", Php::Const); + * myclass.constant("MY_CONSTANT", "value"); + * myclass.add(Php::Constant("MY_CONSTANT", "value")); + * + * All of the calls have the same result, it is up to you to decide which + * one suits you most. If you use the last one - using a Php::Constant + * class - the PHP-CPP library will call this "addTo()" method internally + * to forward the call to one of the other methods. + * + * @param clss Class to which the constant is added + * @internal + */ + void addTo(ClassBase &clss); private: /** |