>  기사  >  백엔드 개발  >  C++를 사용하여 PHP 확장 개발

C++를 사용하여 PHP 확장 개발

WBOY
WBOY원래의
2016-08-08 09:21:421440검색
재인쇄: http://521-wf.com/archives/241.html이 기사는 주로 C++를 사용하여 PHP 확장을 개발하는 것과 C 언어를 사용하는 것의 차이점을 소개합니다 현재 PHP 프로그래밍 언어도 상당히 성숙해 있습니다. 다양한 문서와 다양한 질문이 있으므로 Google에 문의하시면 언제든지 원하는 답변을 얻으실 수 있습니다. 물론 "PHP 확장 개발 방법"에 대한 기사는 많이 있지만, C++를 사용하여 PHP 확장을 개발하는 방법을 구체적으로 소개하는 기사는 거의 없습니다. C++ 프로그래밍 언어의 강력한 기능으로 인해 많은 회사에서는 이를 백엔드 프로그램에 사용하도록 선택했습니다. 따라서 우리가 직면하는 대부분의 상황에서는 PHP를 확장하기 위해 C++를 사용해야 합니다. PHP 소스 코드의 확장 스켈레톤 도구는 C 언어를 지원하기 위해 기본적으로 생성됩니다. C++를 사용하여 개발하려면 일부 매개변수를 별도로 구성해야 합니다. 아래에서는 간단한 예를 사용하여 설명합니다. 준비: 1. PHP 소스 코드 http://www.php.net/downloads를 다운로드합니다. 여기서 다운로드되는 것은 php-5.3.24입니다. tar .gz
2. 압축을 푼 후 /root/php-5.3.24/
에 소스 코드를 넣습니다. 3. 설치 디렉터리: /usr/local/php-5.3.24/
4. 설치 및 구성 향후 개인 설정을 용이하게 하기 위한 php.ini 경로
5. 확장자 이름: discuz
6. 확장자 함수: discuz_say(), 이 함수는 "Hello world!"만 반환합니다. 확장은 unix 계열 시스템뿐만 아니라 win32 시스템에서도 실행될 수 있지만, 여기서는 GNU/Linux에서의 작업만 소개합니다.
확장 기능 작성 시작: 1. 다음 내용으로 구현할 함수 목록 파일 discuz.proto를 만듭니다. string discuz_say()2. 확장된 스켈레톤 도구를 사용하면 다음과 같은 명령이 생성됩니다. [root@localhost ~]# cd php-5.3.24/ext/ [root@localhost ext]# ./ext_skel --extname=discuz --proto=../../discuz.proto 이때 discuz 폴더는 다음과 같은 여러 파일이 포함된 ext 디렉터리에 나타납니다. m4 discuz.c php_discuz.h 등 잠깐만요. 3. 다음 내용으로 config.m4 파일을 수정합니다. dnl $Id$ dnl config.m4 for extension discuz PHP_ARG_ENABLE(discuz, whether to enable discuz support, Make sure that the comment is aligned: [ --enable-discuz Enable discuz support]) if test "$PHP_DISCUZ" != "no"; then PHP_REQUIRE_CXX() dnl 通知Make使用g++ PHP_ADD_LIBRARY(stdc++, 1, EXTRA_LDFLAGS) dnl 加入C++标准库 PHP_NEW_EXTENSION(discuz, discuz.cpp, $ext_shared) fi이 파일에서 dnl은 주석 문자이고 그 뒤의 문자열은 해석 컨텍스트입니다. 4.2 discuz_say 함수를 다음과 같이 수정합니다. 5. 확장 기능을 컴파일하고 discuz.so를 설치 디렉터리에 넣습니다. #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "php.h" #include "php_ini.h" #include "ext/standard/info.h" #include "php_discuz.h" #include /* 添加这行 */PHP 확장을 컴파일하는 두 가지 방법). /* {{{ proto string discuz_say() */ PHP_FUNCTION(discuz_say) { std::string str = "Hello world!"; RETURN_STRINGL(str.c_str(), str.length(), 1); }테스트 시작: 이 시점에서 간단한 확장이 완료됩니다 위 내용은 내용의 측면을 포함하여 PHP 확장을 개발하기 위한 C++ 사용을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.