diff options
Diffstat (limited to 'zend')
-rw-r--r-- | zend/extensionimpl.cpp | 56 | ||||
-rw-r--r-- | zend/extensionimpl.h | 105 | ||||
-rw-r--r-- | zend/includes.h | 7 |
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" |