재인쇄: 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으로 문의하세요.