> 백엔드 개발 > PHP 튜토리얼 > PHP7 확장 개발에서 hello word를 구현하는 방법

PHP7 확장 개발에서 hello word를 구현하는 방법

小云云
풀어 주다: 2023-03-19 14:38:01
원래의
1808명이 탐색했습니다.

이 글에서는 주로 PHP7 확장 개발의 Hello Word 구현 방법을 소개합니다. PHP7 확장 개발의 구체적인 단계와 관련 운영 기술을 예제 형식으로 분석합니다. 여기에는 PHP의 기본 소스 코드를 수정하고 컴파일하는 작업이 포함됩니다. 필요하면 모두에게 도움이 되길 바랍니다.

여기에서는 PHP7을 기반으로 PHP 확장을 처음부터 만드는 방법을 설명합니다. 이 문서에서는 주로 확장을 만드는 기본 단계를 설명합니다. 예제에서는 다음 함수를 구현하겠습니다.


<?php
echo say();
?>
로그인 후 복사

출력 내용:


$ php ./test.php
$ hello word
로그인 후 복사

Extension에서 say 메소드를 구현하고, say 메소드 호출 후 hello 단어를 출력합니다.

1단계: 코드 생성

PHP는 기본 코드 ext_skel을 생성하는 도구를 제공합니다. 이 도구는 PHP 소스 코드의 ./ext 디렉터리에 있습니다.


$ cd php_src/ext/
$ ./ext_skel --extname=say
로그인 후 복사

extname 매개변수의 값은 확장자 이름입니다. ext_skel 명령을 실행하면 현재 디렉터리에 동일한 확장명 이름을 가진 디렉터리가 생성됩니다.

두 번째 단계는 config.m4 구성 파일을 수정하는 것입니다.

config.m4의 기능은 phpize 도구와 협력하여 구성 파일을 생성하는 것입니다. 구성 파일은 환경 감지에 사용됩니다. Extension 컴파일 및 실행에 필요한 환경이 충족되는지 확인합니다. 이제 config.m4 파일을 수정하기 시작합니다.


$ cd ./say
$ vim ./config.m4
로그인 후 복사

config.m4 파일을 열면 이 텍스트 단락을 찾을 수 있습니다.


dnl If your extension references something external, use with:
dnl PHP_ARG_WITH(say, for say support,
dnl Make sure that the comment is aligned:
dnl [ --with-say       Include say support])
dnl Otherwise use enable:
dnl PHP_ARG_ENABLE(say, whether to enable say support,
dnl Make sure that the comment is aligned:
dnl [ --enable-say      Enable say support])
로그인 후 복사

여기서 dnl은 주석 기호입니다. 위 코드는 작성하는 확장이 다른 확장이나 lib 라이브러리에 의존하는 경우 PHP_ARG_WITH 관련 코드에서 주석을 제거해야 함을 나타냅니다. 그렇지 않으면 PHP_ARG_ENABLE 관련 코드 세그먼트의 주석을 제거하세요. 우리가 작성하는 확장은 다른 확장과 lib 라이브러리에 의존할 필요가 없습니다. 따라서 PHP_ARG_ENABLE 앞의 주석을 제거합니다. 주석을 제거한 후의 코드는 다음과 같습니다.


dnl If your extension references something external, use with:
 dnl PHP_ARG_WITH(say, for say support,
 dnl Make sure that the comment is aligned:
 dnl [ --with-say       Include say support])
 dnl Otherwise use enable:
 PHP_ARG_ENABLE(say, whether to enable say support,
 Make sure that the comment is aligned:
 [ --enable-say      Enable say support])
로그인 후 복사

세 번째 단계는 코드

를 구현하고 say.c 파일을 수정하는 것입니다. say 메소드를 구현하세요.
PHP_FUNCTION(confirm_say_compiled)를 찾아 그 위에 다음 코드를 추가하세요. PHP_FUNCTION(confirm_say_compiled),在其上面增加如下代码:


PHP_FUNCTION(say)
{
    zend_string *strg;
    strg = strpprintf(0, "hello word");
    RETURN_STR(strg);
}
로그인 후 복사

找到 PHP_FE(confirm_say_compiled, 在上面增加如下代码:


PHP_FE(say, NULL)
로그인 후 복사

修改后的代码如下:


const zend_function_entry say_functions[] = {
   PHP_FE(say, NULL)    /* For testing, remove later. */
   PHP_FE(confirm_say_compiled,  NULL)    /* For testing, remove later. */
   PHP_FE_END /* Must be the last line in say_functions[] */
 };
 /* }}} */
로그인 후 복사

第四步,编译安装

编译扩展的步骤如下:


$ phpize
$ ./configure
$ make && make install
로그인 후 복사

修改php.ini文件,增加如下代码:


[say]
extension = say.so
로그인 후 복사

然后执行,php -m

rrreeePHP_FE(confirm_say_compiled)를 찾아 그 위에 다음 코드를 추가하세요.

rrreee

수정된 코드는 다음과 같습니다.

rrreee

네 번째 단계, 컴파일 및 설치

확장 프로그램 컴파일 단계는 다음과 같습니다.

rrreee
php.ini 수정 파일에 다음 코드를 추가하세요.

🎜🎜 🎜rrreee🎜그런 다음 php -m 명령을 실행하면 출력에 say라는 단어가 표시됩니다. test🎜🎜🎜🎜 직접 스크립트를 작성하세요. 출력 내용이 예상한 것과 같은지 확인하세요. 🎜🎜관련 권장 사항: 🎜🎜🎜PHP7의 새로운 기능 소개🎜🎜🎜🎜PHP7 오류 처리 방법 🎜🎜🎜🎜php7용 성능 테스트 환경 구축 방법🎜🎜 🎜🎜🎜

위 내용은 PHP7 확장 개발에서 hello word를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿