summaryrefslogtreecommitdiff
path: root/src/value.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/value.cpp')
-rw-r--r--src/value.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/value.cpp b/src/value.cpp
index 4170404..fd300d5 100644
--- a/src/value.cpp
+++ b/src/value.cpp
@@ -1554,6 +1554,27 @@ HashMember<std::string> Value::operator[](const char *key)
}
/**
+ * Retrieve the original implementation
+ *
+ * This only works for classes that were implemented using PHP-CPP,
+ * it returns nullptr for all other classes
+ *
+ * @return Base*
+ */
+Base *Value::implementation() const
+{
+ // must be an object
+ if (!isObject()) return nullptr;
+
+ // retrieve the mixed object that contains the base
+ MixedObject *object = (MixedObject *)zend_object_store_get_object(_val);
+ if (!object) return nullptr;
+
+ // retrieve the associated C++ class
+ return object->cpp;
+}
+
+/**
* Custom output stream operator
* @param stream
* @param value