PHP Zstd 扩展项目教程
php-ext-zstdZstd Extension for PHP项目地址:https://gitcode.com/gh_mirrors/ph/php-ext-zstd
1. 项目的目录结构及介绍
php-ext-zstd/
├── config.m4
├── config.w32
├── CREDITS
├── EXPERIMENTAL
├── LICENSE
├── php_zstd.h
├── README.md
├── zstd.c
├── zstd_compress.c
├── zstd_decompress.c
├── zstd_stream.c
└── tests/
├── 001.phpt
├── 002.phpt
└── ...
config.m4
和config.w32
: 用于配置扩展的构建过程。CREDITS
: 项目贡献者列表。EXPERIMENTAL
: 实验性功能说明。LICENSE
: 项目许可证。php_zstd.h
: 扩展的头文件。README.md
: 项目说明文档。zstd.c
,zstd_compress.c
,zstd_decompress.c
,zstd_stream.c
: 扩展的主要源代码文件。tests/
: 包含测试文件,用于验证扩展的功能。
2. 项目的启动文件介绍
项目的启动文件主要是 zstd.c
,它是扩展的入口文件。该文件包含了扩展的初始化函数 zstd_module_entry
,负责注册扩展的函数和常量。
PHP_MINIT_FUNCTION(zstd) {
// 注册常量和函数
REGISTER_LONG_CONSTANT("ZSTD_COMPRESS_LEVEL_MIN", ZSTD_COMPRESS_LEVEL_MIN, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("ZSTD_COMPRESS_LEVEL_MAX", ZSTD_COMPRESS_LEVEL_MAX, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("ZSTD_COMPRESS_LEVEL_DEFAULT", ZSTD_COMPRESS_LEVEL_DEFAULT, CONST_CS | CONST_PERSISTENT);
REGISTER_STRING_CONSTANT("LIBZSTD_VERSION_STRING", ZSTD_VERSION_STRING, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("LIBZSTD_VERSION_NUMBER", ZSTD_VERSION_NUMBER, CONST_CS | CONST_PERSISTENT);
return SUCCESS;
}
3. 项目的配置文件介绍
项目的配置文件主要是 config.m4
,它用于配置扩展的构建过程。该文件包含了如何编译和链接扩展的指令。
PHP_ARG_WITH(libzstd, for libzstd support,
[ --with-libzstd Include libzstd support])
if test "$PHP_LIBZSTD" != "no"; then
SEARCH_PATH="/usr/local /usr"
SEARCH_FOR="/include/zstd.h"
if test -r $PHP_LIBZSTD/$SEARCH_FOR; then
LIBZSTD_DIR=$PHP_LIBZSTD
else
AC_MSG_CHECKING([for libzstd in default path])
for i in $SEARCH_PATH ; do
if test -r $i/$SEARCH_FOR; then
LIBZSTD_DIR=$i
AC_MSG_RESULT(found in $i)
fi
done
fi
if test -z "$LIBZSTD_DIR"; then
AC_MSG_RESULT([not found])
AC_MSG_ERROR([Please install the libzstd development package])
fi
PHP_ADD_INCLUDE($LIBZSTD_DIR/include)
PHP_ADD_LIBRARY_WITH_PATH(zstd, $LIBZSTD_DIR/lib, ZSTD_SHARED_LIBADD)
PHP_SUBST(ZSTD_SHARED_LIBADD)
PHP_NEW_EXTENSION(zstd, zstd.c zstd_compress.c zstd_decompress.c zstd_stream.c, $ext_shared)
fi
该配置文件主要负责检查 libzstd
库的存在,并将其包含在扩展的构建过程中。
php-ext-zstdZstd Extension for PHP项目地址:https://gitcode.com/gh_mirrors/ph/php-ext-zstd