how to write a php extension
The construction of each PHP extension requires at least two files: a configuration file, which tells the compile time which files to build and what external libraries are required, and at least one source file, which performs the actual work.
Dissecting an Extension
In fact, there will usually be a second or third configuration file, and one or more header files. For your first extension, you will need Add one file of each type and work with them.
Configuration files
To get started, first create a directory called sample in the ext/ directory of your PHP source tree . Actually this new directory can be placed anywhere, but in order to demonstrate win32 and static build options later in this chapter, we will create it in the source code directory first.
Next step, enter this directory and create A file named config.m4, type the following content:
1 2 3 4 5 6 7 8 |
|
This is the minimum requirement to be able to call the enable-sample option during ./configure. The second parameter of PHP_ARG_ENABLE will be used during ./configure processing Displayed when reaching the configuration file of this extension. The third parameter will be displayed as a help message when the terminal user executes ./configure --help.
Have you ever wondered why some extension configurations use enable-extname? Some extensions use with-extname? There is no functional difference between the two. In fact, enable means that enabling this feature does not require any other third-party libraries. In contrast, with means that there are other prerequisites for using this feature.
Now, your sample extension does not need to be linked with other libraries, so you only need to use the enable version. In Chapter 17 "External Libraries", we will introduce using with and instruct the compiler to use additional CFLAGS and LDFLAGS settings.
If the end user calls ./configure with the enable-sample option, then the local environment variable$PHP_SAMPLE, will be set to yes. PHP_SUBST() is a standard autoconf PHP modified version of the AC_SUBST() macro, which is required when building an extension as a shared module.
Last but not least, PHP_NEW_EXTENSION() defines the module and enumerates all that must be used as an extension A portion of compiled source files. If multiple files are needed, it can be enumerated using spaces in the second parameter, for example:
PHP_NEW_EXTENSION(sample, sample.c sample2.c sample3.c, $ext_shared)
The last parameter corresponds to the PHP_SUBST (SAMPLE_SHARED_LIBADD) command, which is also needed when building a shared module.
Header file
When developing in C, It is common practice to isolate data type definitions in external header files and include them in source files. Although PHP does not require this, it can simplify things when the module grows to the point where it cannot be placed in a single source file. .
In your php_sample.h header file, start with the following:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
This header file accomplishes two main tasks: If the extension is built using the phpize tool (this book usually All use this method), then HAVE_CONFG_H is defined, so config.h will be included normally. No matter how the extension is compiled, php.h will be included from the php source tree. This header file contains the php source code Other header files used to access most PHPAPI.
Next, define the zend_module_entry structure used by your extension as external, so that when this module is loaded using extension=xxx, it can be used by Zend dlopen and dlsym().
The header file will also contain some preprocessing to define the information that will be used in the original file.
Source code
Finally, the most important You need to create a simple source code skeleton in sample.c:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
The above is the detailed content of how to write a php extension. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics





PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

If you are an experienced PHP developer, you might have the feeling that you’ve been there and done that already.You have developed a significant number of applications, debugged millions of lines of code, and tweaked a bunch of scripts to achieve op

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.
