C++를 사용하여 PHP7/8 확장을 개발하고 다른 확장과 상호 작용하는 방법
소개:
PHP는 널리 사용되는 서버 측 스크립팅 언어로, PHP 확장을 개발하여 PHP 함수에 일부 사용자 정의를 추가할 수 있습니다. 특징. 이 기사에서는 C++를 사용하여 PHP7/8 확장을 개발하는 방법을 소개하고 다른 확장과 상호 작용하는 방법을 보여줍니다.
1. 준비:
시작하기 전에 PHP7/8 개발 환경을 설정하고 특정 C++ 프로그래밍 지식을 갖추고 있는지 확인하세요.
2. 확장 프로그램 만들기:
먼저 확장 프로그램의 소스 코드를 저장할 폴더를 만들어야 합니다. 명령줄에서 다음 명령을 실행합니다.
mkdir myextension cd myextension
myextension 폴더에 myextension.cpp라는 파일을 확장 프로그램 항목 파일로 만듭니다. 이 파일에는 확장의 기본 구조와 기능이 작성됩니다.
myextension.cpp 샘플 코드는 다음과 같습니다.
#include "php_myextension.h" zend_function_entry myextension_functions[] = { PHP_FE(myextension_hello, NULL) {NULL, NULL, NULL} }; zend_module_entry myextension_module_entry = { STANDARD_MODULE_HEADER, "myextension", myextension_functions, NULL, NULL, NULL, NULL, NULL, PHP_MYEXTENSION_VERSION, STANDARD_MODULE_PROPERTIES }; #ifdef COMPILE_DL_MYEXTENSION #ifdef ZTS ZEND_TSRMLS_CACHE_DEFINE() #endif ZEND_GET_MODULE(myextension) #endif PHP_FUNCTION(myextension_hello) { php_printf("Hello from myextension!"); }
확장의 컴파일 옵션을 구성하려면 myextension 폴더에 config.m4라는 파일을 생성합니다.
config.m4 샘플 코드는 다음과 같습니다.
PHP_ARG_ENABLE(myextension, whether to enable myextension support, [ --enable-myextension Enable myextension support]) if test "$PHP_MYEXTENSION" = "yes"; then AC_DEFINE(PHP_MYEXTENSION_ENABLED, 1, [Whether myextension support is enabled]) PHP_NEW_EXTENSION(myextension, myextension.cpp, $ext_shared) fi PHP_SUBST(MYEXTENSION_SHARED_LIBADD)
myextension 폴더에 php_myextension.h라는 파일을 생성하여 확장 기능과 매크로를 정의합니다.
php_myextension.h 샘플 코드는 다음과 같습니다.
#ifndef PHP_MYEXTENSION_H #define PHP_MYEXTENSION_H extern zend_module_entry myextension_module_entry; #define phpext_myextension_ptr &myextension_module_entry #define PHP_MYEXTENSION_VERSION "1.0.0" PHP_FUNCTION(myextension_hello); #endif
PHP의 확장 디렉토리에 myextension.ini라는 파일을 생성하여 myextension 확장의 동작을 구성합니다.
Myextension.ini 샘플 코드는 다음과 같습니다.
extension=myextension.so
다음으로 확장 기능을 컴파일하고 설치해야 합니다. 명령줄에서 다음 명령을 실행합니다.
phpize ./configure --enable-myextension make sudo make install
모든 것이 잘 진행되면 컴파일 후 myextension.so라는 확장 파일이 생성됩니다. 해당 파일을 PHP의 확장 디렉터리에 복사하고 php.ini 파일에서 확장을 활성화합니다.
3. 다른 확장과 상호 작용:
확장이 개발된 후에는 확장이 제공하는 함수 및 전역 변수를 통해 다른 확장과 상호 작용할 수 있습니다. 다음은 zlib 확장과 상호 작용하는 예입니다.
파일 시작 부분에 헤더 파일 참조 추가:
#include <zlib.h>
myextension_hello 함수에서 zlib 함수 호출:
PHP_FUNCTION(myextension_hello) { unsigned long sourceLen = 200; char source[] = "Hello from myextension!"; unsigned long destLen = compressBound(sourceLen); char* dest = (char*)malloc(destLen); compress((Bytef*)dest, &destLen, (const Bytef*)source, sourceLen); php_printf("Compressed string: %s", dest); free(dest); }
이전 단계에 따라 컴파일하고 설치합니다.
test.php라는 파일을 만들고 다음 코드를 작성합니다.
<?php echo myextension_hello(); ?>
명령줄에서 다음 명령을 실행합니다.
php test.php
모든 것이 정상이면 다음 출력이 표시됩니다.
Compressed string: H4sIAAAAAAAEAEvNLE3WcuhKS0xOLC8tSizJzM8PKS4tKEpPzs8rSCpNzS1OL8pPogXQA
4. 요약:
이 기사의 소개를 통해 C++를 사용하여 PHP7/8 확장을 개발하고 다른 확장과 상호 작용하는 방법을 배워야 합니다. 자신만의 PHP 확장 기능을 개발하면 애플리케이션에 더 많은 기능을 제공할 수 있기를 바랍니다. 이 기사가 도움이 되기를 바랍니다.
위 내용은 C++를 사용하여 PHP7/8 확장을 개발하고 다른 확장과 상호 작용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!