From 9634a336f080bc15c1e67495eb9216d1863808f8 Mon Sep 17 00:00:00 2001 From: Emiel Bruijntjes Date: Thu, 12 Sep 2013 05:46:02 -0700 Subject: It now is possible to access global variables, using environment[varname], and to set global variable using environment[varname] = "value" --- src/global.cpp | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/global.cpp (limited to 'src/global.cpp') diff --git a/src/global.cpp b/src/global.cpp new file mode 100644 index 0000000..af72bc0 --- /dev/null +++ b/src/global.cpp @@ -0,0 +1,42 @@ +/** + * Global.cpp + * + * Implementation for the global variable + * + * @author Emiel Bruijntjes + * @copyright 2013 Copernica BV + */ +#include "includes.h" + +/** + * Namespace + */ +namespace Php { + +/** + * Function that is called when the value is updated + * @return Value + */ +Global &Global::update() +{ + // skip if the variable already exists + if (_exists) return *this; + + // add the variable to the globals + zend_hash_add(EG(active_symbol_table), _name.c_str(), _name.size()+1, &_val, sizeof(zval*), NULL); + + // add one extra reference because the variable now is a global var too + Z_ADDREF_P(_val); + + // remember that the variable now exists + _exists = true; + + // done + return *this; +} + +/** + * End of namespace + */ +} + -- cgit v1.2.3