PHP扩展开发——准备

在开发扩展之前,需要做一些准备工作:脚手架使用、环境配置。

生成基本骨架

首先,我们需要使用官方提供的ext_skel脚本来生成扩展的大致骨架和基础代码。

./ext_skel.php --ext ext_test # ext_test为扩展名称

这个脚本在php源码中可以找到,具体路径为php-src/ext/ext_skel

php 7.3之前是用shell写的脚本,之后是用php写的。

执行完上述命令后,就会生成扩展骨架:

ext_test/
├── config.m4       # unix编译配置
├── config.w32      # windows编译配置
├── ext_test.c      # 主要c代码
├── php_ext_test.h  # 主要头文件
└── tests           # 测试
    ├── 001.phpt
    ├── 002.phpt
    └── 003.phpt

环境配置

这里我是用JetBrains家的CLion作为开发环境,具体配置步骤为:

1. 创建CMakeLists.txt文件

点击Create CMakeLists.txt会生成如下的文件内容:

cmake_minimum_required(VERSION 3.20)
project(ext_test C)

set(CMAKE_C_STANDARD 11)

include_directories(.)

add_executable(ext_test
        ext_test.c
        php_ext_test.h)

2. 加载PHP头文件

此时打开C文件ext_test.c会有一些报红,我们需要在CMakeLists.txt中增加如下代码,将PHP的头文件也加载进来即可:

include_directories(/usr/local/include/php)
include_directories(/usr/local/include/php/main)
include_directories(/usr/local/include/php/Zend)

准备工作完成了,后面就会开始实现扩展的一些具体功能。