在开发扩展之前,需要做一些准备工作:脚手架使用、环境配置。
生成基本骨架
首先,我们需要使用官方提供的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)
准备工作完成了,后面就会开始实现扩展的一些具体功能。