If you develop data driven websites then there are certain things you have to repeat. For instance, for each and every transaction with the database, you have to create a connection, log on to it, perform certain transactions and then disconnect. This not only consumes a lot of your precious time, but also efforts. You can automate this task by creating custom extensions in PHP.
| Direct Hit! |
| Applies To: PHP developers USP: Create custom extensions for ease of usage Primary Link:www.zend.com Keywords: NA |
Extensions can be considered as plug-ins for the PHP engine or simply as an add-on. They are written mostly in C language and due to this, you can write processor intensive functions in C and they will work faster than functions that have been written in PHP.
Other than this, suppose you have a code that is required frequently, you can include this piece of code as an extension rather than calling it as a function. This makes it faster and more efficient.
You can also use extension in scenarios when you don't want to provide your source code. Just make an extension and give it away to the devel- oper, but ofcourse with the necessary documentation.
Before you can start developing custom extensions, you need to load PHP and Apache on your workstation. We built them on a Fedora 7 Linux machine, so the command to install them is as follows:
# yum -y install httpd php mysql mysql-server php-mysql
This command not only installs PHP and Apache, but it also installs MySQL Server and further integrates PHP and MySQL. However, remember that in order to run these commands, an Internet connection is a must, because these commands have to download certain required files.
| Custom built module, which gets loaded with PHP can be viewed under the 'Additional Modules' section |
Building a Custom Extension
Let's begin by adding a simple 'hello' extension to PHP. For this you have to make three different files:
1. First is the source file where the source code will reside,
2. Second is the configuration file which will be required by 'phpize' for building up the extension. 'phpize' is basically a shell script, which is required for preparing PHP extensions for compilation.
3. Third is the header file which has references that will be required by PHP for loading the extensions. In order to avoid any mess-up, let us give the test directory a name 'hello'.
Now, we will write a simple source code, which will contain the description for the function 'hello_world()'. Name the file created as 'hello.c'. The source code for the same is written below:
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "php.h"
#include "php_hello.h"
static function_entry hello_functions<> = {
PHP_FE(hello_world, NULL)
{NULL, NULL, NULL}
};
zend_module_entry hello_module_entry = {
#if ZEND_MODULE_API_NO >= 20010901
STANDARD_MODULE_HEADER,
#endif
PHP_HELLO_WORLD_EXTNAME,
hello_functions,
NULL,
NULL,
NULL,
NULL,
NULL,
#if ZEND_MODULE_API_NO >= 20010901
PHP_HELLO_WORLD_VERSION,
#endif
STANDARD_MODULE_PROPERTIES
};
#ifdef COMPILE_DL_HELLO
ZEND_GET_MODULE(hello)
#endif
PHP_FUNCTION(hello_world)
{
RETURN_STRING("Hello World", 1);
}
Similarly, create the header file, and name it 'php_hello.h'. The source code required for creating the header is
written below.
#ifndef PHP_HELLO_H
#define PHP_HELLO_H 1
#define PHP_HELLO_WORLD_VERSION "1.0"
#define PHP_HELLO_WORLD_EXTNAME "hello"
PHP_FUNCTION(hello_world);
extern zend_module_entry hello_module_entry;
#define phpext_hello_ptr &hello_module_entry
#endif
Now, create the configuration file, and name it config.m4. The creation of the configuration file includes the
following code:
PHP_ARG_ENABLE(hello, whether to enable Hello World support,
< --enable-hello Enable Hello World support>)
if test "$PHP_HELLO" = "yes"; then
AC_DEFINE(HAVE_HELLO, 1,
PHP_NEW_EXTENSION(hello, hello.c, $ext_shared)
fi
Finally, to build an extension run the following commands:
# phpize
# ./configure --enable-hello
# make
Once you are through with all these steps, a 'hello.so' file will be generated in the module directory inside the 'hello' folder. To check whether the extension you created gets loaded along with PHP, open Internet Explorer, load a test Web page showing 'phpinfo(),' and look into additional modules. It will display the extension name 'hello' there. You can also use 'extended_ loaded()' function to view the loaded extension.
/ciol/media/agency_attachments/c0E28gS06GM3VmrXNw5G.png)
Follow Us