Home  >  Article  >  Backend Development  >  PHP extension development: writing the first extension hello world

PHP extension development: writing the first extension hello world

不言
不言Original
2018-04-13 16:16:243329browse

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn