>  기사  >  백엔드 개발  >  사용자 정의 PHP 확장을 만드는 방법

사용자 정의 PHP 확장을 만드는 방법

王林
王林원래의
2023-06-22 11:31:391223검색

PHP에서 확장이란 PHP에 새로운 기능을 추가하는 방법을 의미하며, 이를 통해 PHP의 기능을 확장하고 다양한 애플리케이션 시나리오에 적응할 수 있습니다. PHP 확장은 C 언어로 작성되므로 C 언어에 대한 지식은 확장 개발을 위한 기본 요구 사항입니다.

귀하의 코드를 다른 사람이 PHP 확장으로 사용할 수 있게 하려면 사용자 정의 PHP 확장을 만들어야 합니다. 이 문서에서는 기본 PHP 확장을 만드는 방법을 보여줍니다.

  1. PHP 개발 환경 설치

확장 개발을 시작하기 전에 PHP 자체 및 관련 도구 체인이 포함된 PHP 개발 환경을 설치해야 합니다. PHP 공식 웹사이트에 가서 PHP 소스 코드를 다운로드하고 컴파일 및 설치하거나, ​​컴파일된 바이너리 패키지를 직접 사용할 수 있습니다.

PHP를 설치한 후에는 PHP C/C++ 확장 개발 키트, phpize 및 기타 도구와 같은 PHP 개발 도구 키트도 설치해야 합니다. 이러한 도구를 사용하면 PHP 확장을 빠르게 컴파일하고 빌드할 수 있습니다.

  1. 확장 C 코드 작성

PHP 확장은 C 언어로 작성되므로 확장 C 코드를 작성하려면 C 언어를 배우고 확장에 필요한 API 및 데이터 유형에 익숙해져야 합니다. 여기서는 간단한 추가 기능을 예로 들어 보겠습니다.

확장 프로그램 디렉터리에서 새 소스 코드 파일 추가.c를 만들고 다음 내용을 작성합니다.

#include "php.h"

// 定义函数原型
PHP_FUNCTION(addition);

// 定义模块信息结构体
zend_module_entry addition_module_entry = {
    STANDARD_MODULE_HEADER,
    "addition",
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    "1.0",
    STANDARD_MODULE_PROPERTIES
};

// 定义函数参数
ZEND_BEGIN_ARG_INFO_EX(arginfo_addition, 0, 0, 2)
    ZEND_ARG_INFO(0, a)
    ZEND_ARG_INFO(0, b)
ZEND_END_ARG_INFO()

// 定义函数
PHP_FUNCTION(addition)
{
    // 定义变量
    int a, b;
    long result;

    // 从参数中获取值
    ZEND_PARSE_PARAMETERS_START(2, 2)
        Z_PARAM_LONG(a)
        Z_PARAM_LONG(b)
    ZEND_PARSE_PARAMETERS_END();

    // 计算结果
    result = a + b;

    // 返回结果
    RETURN_LONG(result);
}

// 注册函数入口
zend_function_entry addition_functions[] = {
    PHP_FE(addition, arginfo_addition)
    PHP_FE_END
};

// 构造扩展
zend_module_entry *get_module(void)
{
    return &addition_module_entry;
}

// 扩展初始化函数
PHP_MINIT_FUNCTION(addition)
{
    return SUCCESS;
}

// 扩展关闭函数
PHP_MSHUTDOWN_FUNCTION(addition)
{
    return SUCCESS;
}

// 扩展信息函数
PHP_MINFO_FUNCTION(addition)
{
    php_info_print_table_start();
    php_info_print_table_header(2, "addition support", "enabled");
    php_info_print_table_end();
}

// 定义模块
zend_module_entry addition_module_entry = {
    STANDARD_MODULE_HEADER,
    "addition",
    addition_functions,  // 注册扩展的函数入口
    PHP_MINIT(addition),
    PHP_MSHUTDOWN(addition),
    NULL,
    NULL,
    PHP_MINFO(addition),
    "1.0",
    STANDARD_MODULE_PROPERTIES
};

// 将扩展注册到PHP中
ZEND_GET_MODULE(addition)
  1. Build and install the Extension

Build 확장 main 이는 PHP와 함께 제공되는 명령줄 도구를 사용하여 수행됩니다. 확장 디렉터리에서 다음 명령을 실행합니다.

phpize
./configure
make

이 명령은 자동으로 Makefile을 생성하고, 컴파일 및 링크하고, 동적 링크 라이브러리(확장 파일) 추가.so를 생성합니다. 이 시점에서 phpinfo() 함수를 사용하여 확장이 생성되었는지 확인할 수 있습니다.

마지막으로 생성된 확장 파일 추가.so를 PHP 모듈 디렉터리에 복사하고 php.ini 파일을 편집하여 확장을 활성화해야 합니다.

sudo cp ./modules/addition.so /path/to/php/modules/
sudo echo "extension=addition.so" >> /path/to/php/php.ini

이제 사용자 정의 확장을 사용할 준비가 되었으며 PHP 코드에서 사용할 수 있습니다. add() 함수를 호출하여 덧셈 계산을 수행합니다.

요약

사용자 정의 PHP 확장을 만들려면 C 언어, API, PHP 확장에 필요한 데이터 유형에 대한 지식은 물론 확장 컴파일 및 설치에 대한 지식도 필요합니다. PHP 확장 개발이 처음이라면 몇 가지 간단한 확장으로 시작하여 점진적으로 프로그래밍 기술을 향상시킬 수 있습니다.

위 내용은 사용자 정의 PHP 확장을 만드는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.