


PHP extension development: writing the first extension hello world
The content of this article is to share with you the writing of the first extension hello world in PHP extension development. It has a certain reference value. Friends in need can refer to it
PHP extension is for advanced PHP programmers One of the skills that must be understood. For a beginning PHP extension developer, how can he develop a mature extension and enter the advanced field of PHP development? This series of development tutorials will take you step by step from entry to advanced stages.
This tutorial series is developed under Linux (centos is recommended), the PHP version is 5.6, and it is assumed that you have certain experience in Linux, git operation and c/c foundation.
If you have any questions and need to communicate, please join the QQ technical exchange group 32550793 to communicate with me.
We use the easy-to-use PHP-CPP framework to develop PHP extensions. If you have certain Linux operating experience and C foundation, follow the steps below, I believe you can make your own in less than 10 minutes The first one expands out.
The following demonstration operations are all completed on the Linux centos system, and the php5.6 series has been installed in advance.
1. Download and install PHP-CPP
If you want to use PHP-CPP to compile your own php extension, you need to first download the source code of PHP-CPP and compile and install it.
PHP-CPP has two framework source codes, called PHP-CPP (new version) and PHP-CPP-LEGACY.
PHP-CPP (new version) is suitable for developing PHP-7 extensions, and PHP-CPP-LEGACY is suitable for developing 5. Extensions for each version of PHP are available.
Our operations below take PHP-CPP-LEGACY as an example.
If you know the git command, you can type the following git command directly on the terminal command line.
# git clone https://github.com/CopernicaMarketingSoftware/PHP-CPP-LEGACY.git
If you don’t know git, it doesn’t matter. You can directly open the github warehouse URL of the source code with a browser, download the source code compressed package and decompress it. The warehouse URL is
https://github.com/ CopernicaM….
After the download is completed, enter the source code directory of PHP-CPP-LEGACY and type the make command to compile the source code. After the compilation is completed, the relevant class libraries required for development extensions will be generated.
# make
Then run the make install command to install the generated class library and related development header files into the Linux system. When the extension is compiled, it can be automatically connected without configuring the header files and class library directories. On.
# sudo make install
2. Download the first extension helloworld
The source code of the first extension helloworld has been prepared on github. You can clone it directly with git command or download it manually.
# git clone https://github.com/elvisszhang/phpcpp_helloworld.git
Enter the helloworld source code directory and open main.cpp. You can see the following code structure, which has been added with Chinese comments.
The most important one is the get_module function, which is the entry function of the extension.
#include <phpcpp.h> #include <iostream> //这是PHP里面可以调用的接口函数 void say_hello() { //输出一段欢迎 Php::out << "hello world from my first extension" << std::endl; } /** * 告诉编译器get_module是个纯C函数 */ extern "C" { /** * 本函数在PHP进程一打开就会被访问,并返回一个描述扩展信息的PHP结构指针 */ PHPCPP_EXPORT void *get_module() { // 必须是static类型,因为扩展对象需要在PHP进程内常驻内存 static Php::Extension extension("helloworld", "1.0.0"); //这里可以添加你要暴露给PHP调用的函数 extension.add<say_hello>("say_hello"); // 返回扩展对象指针 return extension; } }
test.php is a piece of php code used for extended testing.
<?php say_hello();
3. Compile the first extension helloworld
Compiling this extension is very simple, just enter the make command at the terminal command line.
# make g++ -Wall -c -O2 -std=c++11 -fpic -o main.o main.cpp g++ -shared -o helloworld.so main.o -lphpcpp
As expected, you will see the helloworld.so extension file in the source directory. You can find that this file is very small, only 14K.
But now if you type the command php -m, you will find that the helloworld extension is not included in the PHP module, because we have not installed it into the PHP operating environment.
4. Install the first extension helloworld
Here we will temporarily introduce the method of manually installing the extension.
Step one: First use the php-config command to determine where the extension is stored
# php-config --extension-dir /usr/local/php56/lib/php/extensions/no-debug-non-zts-20131226
The above shows the extension installation on my server Location, everyone's server may have different configurations.
Step 2: Then copy helloworld.so to the extension storage directory.
# cp helloworld.so /usr/local/php56/lib/php/extensions/no-debug-non-zts-20131226/
Step 3: Modify the php.ini file and enable the helloworld extension
Open the php.ini file, Add the following configuration items and add a new line anywhere in php.ini.
extension = helloworld.so
Step 4: Confirm that the helloworld extension has been installed successfully
Use the php -m command to view all extensions currently installed in PHP.
# php -m | grep helloworld helloworld
Judging from the response from the command line above, the helloworld extension has been installed successfully.
Step 5: Run test.php to confirm that the registered function can be used
or is in the extended source directory, run the following command
# php test.php hello world from my first extension
Judging from the response of the command line above, the say_hello function we registered with PHP through the extension has been successfully run. It seems very simple, but the current extension can only say hello and cannot do anything serious. We will improve it later so that he can do more things.
References
PHP-CPP installation and hello world
PHP-CPP official website tutorial
Related recommendations:
PHP extension development Comparison and introduction of related development technologies
The above is the detailed content of PHP extension development: writing the first extension hello world. 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,

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

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

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.
