在PHP中,扩展是非常重要的。而C语言是编写扩展的主流方式之一,这其中,写PHP7扩展便是常见的实践。下面就来详细介绍一下如何使用C语言来编写PHP7的扩展。
一个PHP7扩展是一个模块,被编译为可加载的共享对象。创建扩展的第一步是创建一个名为“PHP_hello”的文件夹,其中包含C扩展“hello.c”。
上述示例代码中,在第4行引入“config.h”文件,这是标准的PHP宏,必须添加到任何PHP扩展中。在9-11行,定义了“hello_functions”作为扩展中的函数入口。在第13-23行,定义了扩展的模块入口,包括模块名称、“hello_functions”函数列表、其他模块信息等。最后,在第25行中,使用“ZEND_GET_MODULE”,实现了一个用于扩展管理器的宏。这样,就完成了“hello.c”文件的基本结构。
接下来让我们来创建“config.h”文件,用于定义扩展的各种配置信息。文件内容如下:
PHP #ifdef HAVE_CONfig_H #include "config.h" #endif #ifndef PHP_HELLO_H #define PHP_HELLO_H 1 #define PHP_HELLO_WORLD_VERSION "1.0" #define PHP_HELLO_WORLD_EXTNAME "hello" #define PHP_HELLO_WORLD_AUTHOR "author" #define PHP_HELLO_WORLD_URL "" #define PHP_HELLO_WORLD_DESCRIPTION "This is a hello world extension for PHP7" #ifdef HAVE_CONfig_H #include "config.h" #endif
在上述示例代码中,在第8至13行定义了扩展的名称、版本、作者信息等,这些信息用于构建模块信息。
在完成了基本结构的定义后,现在我们就可以来添加扩展中的函数方法了。如下所示是一个简单的函数示例代码:
PHP // 示例代码:hello.c function PHP_FUNCTION(hello_world) { PHP_printf("Hello world"); } static function_entry hello_functions[] = { PHP_FE(hello_world,NULL) NULL };
在上述示例代码中,我们定义了“hello_world”函数,并在第9行的函数列表中,添加了“PHP_FE(hello_world,NULL)”用于将函数添加到PHP7中的函数表中。
最后,让我们来编译PHP7扩展。进入到“PHP_hello”文件夹中,执行如下命令:
PHP $ PHPize $ ./configure --enable-hello $ make $ make test $ sudo make install
通过上述命令,扩展将被编译并生成共享对象文件,最终放置在“/usr/local/lib/PHP/extensions/no-debug-non-zts-20170718”目录下。如果您需要在PHP7中使用该扩展,可以修改“PHP.ini”文件,并添加以下语句:
PHP extension=/usr/local/lib/PHP/extensions/no-debug-non-zts-20170718/hello.so
现在,您就可以使用这个简单的扩展来测试PHP7并开始编写自己的PHP扩展。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。