summaryrefslogtreecommitdiff
path: root/zend
diff options
context:
space:
mode:
Diffstat (limited to 'zend')
-rw-r--r--zend/extensionimpl.cpp56
-rw-r--r--zend/extensionimpl.h105
-rw-r--r--zend/includes.h7
3 files changed, 40 insertions, 128 deletions
diff --git a/zend/extensionimpl.cpp b/zend/extensionimpl.cpp
index 9562362..77b9985 100644
--- a/zend/extensionimpl.cpp
+++ b/zend/extensionimpl.cpp
@@ -106,7 +106,7 @@ static ExtensionImpl *find(int number TSRMLS_DC)
* @param tsrm_ls
* @return int 0 on success
*/
-int ExtensionImpl::onStartup(int type, int module_number TSRMLS_DC)
+int ExtensionImpl::processStartup(int type, int module_number TSRMLS_DC)
{
// initialize and allocate the "global" variables
ZEND_INIT_MODULE_GLOBALS(phpcpp, init_globals, NULL);
@@ -131,7 +131,7 @@ int ExtensionImpl::onStartup(int type, int module_number TSRMLS_DC)
* @param tsrm_ls
* @return int
*/
-int ExtensionImpl::onShutdown(int type, int module_number TSRMLS_DC)
+int ExtensionImpl::processShutdown(int type, int module_number TSRMLS_DC)
{
// get the extension
auto *extension = find(module_number TSRMLS_CC);
@@ -150,7 +150,7 @@ int ExtensionImpl::onShutdown(int type, int module_number TSRMLS_DC)
* @param tsrm_ls
* @return int 0 on success
*/
-int ExtensionImpl::onRequest(int type, int module_number TSRMLS_DC)
+int ExtensionImpl::processRequest(int type, int module_number TSRMLS_DC)
{
// get the extension
auto *extension = find(module_number TSRMLS_CC);
@@ -169,7 +169,7 @@ int ExtensionImpl::onRequest(int type, int module_number TSRMLS_DC)
* @param tsrm_ls
* @return int 0 on success
*/
-int ExtensionImpl::onIdle(int type, int module_number TSRMLS_DC)
+int ExtensionImpl::processIdle(int type, int module_number TSRMLS_DC)
{
// get the extension
auto *extension = find(module_number TSRMLS_CC);
@@ -187,35 +187,35 @@ int ExtensionImpl::onIdle(int type, int module_number TSRMLS_DC)
* @param name Name of the extension
* @param version Version number
*/
-ExtensionImpl::ExtensionImpl(Extension *data, const char *name, const char *version) : _data(data)
+ExtensionImpl::ExtensionImpl(Extension *data, const char *name, const char *version) : ExtensionBase(data)
{
// keep extension pointer based on the name
name2extension[name] = this;
// assign all members (apart from the globals)
- _entry.size = sizeof(zend_module_entry); // size of the data
- _entry.zend_api = ZEND_MODULE_API_NO; // api number
- _entry.zend_debug = ZEND_DEBUG; // debug mode enabled?
- _entry.zts = USING_ZTS; // is thread safety enabled?
- _entry.ini_entry = NULL; // the php.ini record
- _entry.deps = NULL; // dependencies on other modules
- _entry.name = name; // extension name
- _entry.functions = NULL; // functions supported by this module (none for now)
- _entry.module_startup_func = &ExtensionImpl::onStartup; // startup function for the whole extension
- _entry.module_shutdown_func = &ExtensionImpl::onShutdown; // shutdown function for the whole extension
- _entry.request_startup_func = &ExtensionImpl::onRequest; // startup function per request
- _entry.request_shutdown_func = &ExtensionImpl::onIdle; // shutdown function per request
- _entry.info_func = NULL; // information for retrieving info
- _entry.version = version; // version string
- _entry.globals_size = 0; // size of the global variables
- _entry.globals_ctor = NULL; // constructor for global variables
- _entry.globals_dtor = NULL; // destructor for global variables
- _entry.post_deactivate_func = NULL; // unknown function
- _entry.module_started = 0; // module is not yet started
- _entry.type = 0; // temporary or persistent module, will be filled by Zend engine
- _entry.handle = NULL; // dlopen() handle, will be filled by Zend engine
- _entry.module_number = 0; // module number will be filled in by Zend engine
- _entry.build_id = (char *)ZEND_MODULE_BUILD_ID; // check if extension and zend engine are compatible
+ _entry.size = sizeof(zend_module_entry); // size of the data
+ _entry.zend_api = ZEND_MODULE_API_NO; // api number
+ _entry.zend_debug = ZEND_DEBUG; // debug mode enabled?
+ _entry.zts = USING_ZTS; // is thread safety enabled?
+ _entry.ini_entry = NULL; // the php.ini record
+ _entry.deps = NULL; // dependencies on other modules
+ _entry.name = name; // extension name
+ _entry.functions = NULL; // functions supported by this module (none for now)
+ _entry.module_startup_func = &ExtensionImpl::processStartup; // startup function for the whole extension
+ _entry.module_shutdown_func = &ExtensionImpl::processShutdown; // shutdown function for the whole extension
+ _entry.request_startup_func = &ExtensionImpl::processRequest; // startup function per request
+ _entry.request_shutdown_func = &ExtensionImpl::processIdle; // shutdown function per request
+ _entry.info_func = NULL; // information for retrieving info
+ _entry.version = version; // version string
+ _entry.globals_size = 0; // size of the global variables
+ _entry.globals_ctor = NULL; // constructor for global variables
+ _entry.globals_dtor = NULL; // destructor for global variables
+ _entry.post_deactivate_func = NULL; // unknown function
+ _entry.module_started = 0; // module is not yet started
+ _entry.type = 0; // temporary or persistent module, will be filled by Zend engine
+ _entry.handle = NULL; // dlopen() handle, will be filled by Zend engine
+ _entry.module_number = 0; // module number will be filled in by Zend engine
+ _entry.build_id = (char *)ZEND_MODULE_BUILD_ID; // check if extension and zend engine are compatible
// things that only need to be initialized
#ifdef ZTS
diff --git a/zend/extensionimpl.h b/zend/extensionimpl.h
index cc37354..e58ce66 100644
--- a/zend/extensionimpl.h
+++ b/zend/extensionimpl.h
@@ -15,16 +15,10 @@ namespace Php {
/**
* Class definition
*/
-class ExtensionImpl
+class ExtensionImpl : public ExtensionBase
{
protected:
/**
- * Pointer to the extension object that is filled by the extension programmer
- * @var Extension
- */
- Extension *_data;
-
- /**
* The information that is passed to the Zend engine
*
* Although it would be slightly faster to not make this a pointer, this
@@ -34,32 +28,7 @@ protected:
* @var zend_module_entry
*/
zend_module_entry _entry;
-
- /**
- * Callback that is called after the engine is initialized and before the
- * pageviews are going to be handled
- * @var Callback
- */
- Callback _onStartup;
-
- /**
- * Callback that is called in front of each request
- * @var Callback
- */
- Callback _onRequest;
-
- /**
- * Callback that is called right after each request
- * @var Callback
- */
- Callback _onIdle;
-
- /**
- * Callback that is called right before the engine is closing down
- * @var Callback
- */
- Callback _onShutdown;
-
+
public:
/**
* Constructor
@@ -81,68 +50,6 @@ public:
virtual ~ExtensionImpl();
/**
- * Register a function to be called when the PHP engine is ready
- *
- * The callback will be called after all extensions are loaded, and all
- * functions and classes are available, but before the first pageview/request
- * is handled. You can register this callback if you want to be notified
- * when the engine is ready, for example to initialize certain things.
- *
- * @param callback
- */
- void onStartup(const Callback &callback)
- {
- // copy callback
- _onStartup = callback;
- }
-
- /**
- * Register a function to be called when the PHP engine is going to stop
- *
- * The callback will be called right before the process is going to stop.
- * You can register a function if you want to clean up certain things.
- *
- * @param callback
- */
- void onShutdown(const Callback &callback)
- {
- // copy callback
- _onShutdown = callback;
- }
-
- /**
- * Register a callback that is called at the beginning of each pageview/request
- *
- * You can register a callback if you want to initialize certain things
- * at the beginning of each request. Remember that the extension can handle
- * multiple requests after each other, and you may want to set back certain
- * global variables to their initial variables in front of each request
- *
- * @param callback
- */
- void onRequest(const Callback &callback)
- {
- // copy callback
- _onRequest = callback;
- }
-
- /**
- * Register a callback that is called to cleanup things after a pageview/request
- *
- * The callback will be called after _each_ request, so that you can clean up
- * certain things and make your extension ready to handle the next request.
- * This method is called onIdle because the extension is idle in between
- * requests.
- *
- * @param callback
- */
- void onIdle(const Callback &callback)
- {
- // copy callback
- _onIdle = callback;
- }
-
- /**
* Retrieve the module entry
*
* This is the memory address that should be exported by the get_module()
@@ -175,7 +82,7 @@ private:
* @param tsrm_ls
* @return int 0 on success
*/
- static int onStartup(int type, int module_number TSRMLS_DC);
+ static int processStartup(int type, int module_number TSRMLS_DC);
/**
* Function that is called when the extension is about to be stopped
@@ -184,7 +91,7 @@ private:
* @param tsrm_ls
* @return int
*/
- static int onShutdown(int type, int module_number TSRMLS_DC);
+ static int processShutdown(int type, int module_number TSRMLS_DC);
/**
* Function that is called when a request starts
@@ -193,7 +100,7 @@ private:
* @param tsrm_ls
* @return int 0 on success
*/
- static int onRequest(int type, int module_number TSRMLS_DC);
+ static int processRequest(int type, int module_number TSRMLS_DC);
/**
* Function that is called when a request is ended
@@ -202,7 +109,7 @@ private:
* @param tsrm_ls
* @return int 0 on success
*/
- static int onIdle(int type, int module_number TSRMLS_DC);
+ static int processIdle(int type, int module_number TSRMLS_DC);
};
/**
diff --git a/zend/includes.h b/zend/includes.h
index f547eb2..50eb4d5 100644
--- a/zend/includes.h
+++ b/zend/includes.h
@@ -76,7 +76,12 @@
#include "../include/call.h"
/**
- * Interface files for internal use only
+ * Common header files for internal use only
+ */
+#include "../common/extensionbase.h"
+
+/**
+ * Specific zend implementation files for internal use only
*/
#include "init.h"
#include "callable.h"