> 백엔드 개발 > PHP 튜토리얼 > PHP 확장 개발: 첫 번째 확장 Hello World 작성

PHP 확장 개발: 첫 번째 확장 Hello World 작성

不言
풀어 주다: 2023-03-23 18:30:01
원래의
3371명이 탐색했습니다.

이 글의 내용은 PHP 확장 개발 중 첫 번째 확장인 hello world의 작성을 공유하는 것입니다. 이는 특정 참조 가치가 있습니다. 필요한 친구가 이를 참조할 수 있습니다.

PHP 확장은 고급 PHP 프로그래머가 갖추어야 할 기술 중 하나입니다. 이해해야 합니다. 초보 PHP 확장 개발자가 어떻게 성숙한 확장을 개발하고 PHP 개발의 고급 분야에 들어갈 수 있습니까? 이 개발 튜토리얼 시리즈는 초보 단계부터 고급 단계까지 단계별로 안내합니다.
이 튜토리얼 시리즈는 Linux(centos 권장)에서 개발되었으며 PHP 버전은 5.6이며 Linux, git 작업 및 c/c++ 기초에 대한 특정 경험이 있다고 가정합니다.
질문이 있거나 소통이 필요한 경우 QQ 기술 교류 그룹 32550793에 가입하여 저와 소통하세요.

우리는 사용하기 쉬운 PHP-CPP 프레임워크를 사용하여 PHP 확장을 개발합니다. 특정 Linux 운영 경험과 C++ 기반이 있는 경우 아래 단계를 따르면 10분 이내에 첫 번째 확장을 만들 수 있습니다. 나오다.
다음 데모 작업은 Linux CentOS 시스템에서 모두 완료되었으며 php5.6 시리즈가 미리 설치되어 있습니다.

1. PHP-CPP 다운로드 및 설치

PHP-CPP를 사용하여 자신만의 PHP 확장을 컴파일하려면 먼저 PHP-CPP의 소스 코드를 다운로드하고 컴파일하고 설치해야 합니다.
PHP-CPP에는 PHP-CPP(새 버전)와 PHP-CPP-LEGACY라는 두 가지 프레임워크 소스 코드가 있습니다.
PHP-CPP(새 버전)는 PHP-7 확장 개발에 적합하고, PHP-CPP-LEGACY는 5. 확장 버전 개발에 적합합니다.
아래 작업에서는 PHP-CPP-LEGACY를 예로 들어 보겠습니다.

git 명령을 알고 있다면 터미널 명령줄에 다음 git 명령을 직접 입력할 수 있습니다.

# git clone https://github.com/CopernicaMarketingSoftware/PHP-CPP-LEGACY.git
로그인 후 복사

git을 모르셔도 상관없습니다. 소스코드의 github Warehouse URL을 브라우저로 직접 열어보시고, 소스코드 압축 패키지를 다운로드 받아 압축을 풀어보세요. Warehouse URL은
https:/입니다. /github.com/CopernicaM....

다운로드가 완료되면 PHP-CPP-LEGACY의 소스코드 디렉토리에 들어가서 make 명령어를 입력해 소스코드를 컴파일하면 개발 확장에 필요한 관련 클래스 라이브러리가 생성됩니다.

# make
로그인 후 복사

그런 다음 make install 명령을 실행하여 생성된 클래스 라이브러리 및 관련 개발 헤더 파일을 Linux 시스템에 설치합니다. 확장 프로그램이 컴파일되면 헤더 파일 및 클래스 라이브러리 디렉터리를 구성하지 않고도 자동으로 연결됩니다.

# sudo make install
로그인 후 복사

2. 첫 번째 확장 helloworld 다운로드

첫 번째 확장 helloworld의 소스 코드는 git 명령으로 직접 복제하거나 수동으로 다운로드할 수 있습니다.

# git clone https://github.com/elvisszhang/phpcpp_helloworld.git
로그인 후 복사

helloworld 소스 코드 디렉터리에 들어가서 main.cpp를 열면 다음 코드 구조를 볼 수 있으며 모두 중국어 주석이 추가되어 있습니다.
가장 중요한 것은 확장의 진입 함수인 get_module 함수입니다.

#include <phpcpp.h>
#include <iostream>

//这是PHP里面可以调用的接口函数
void say_hello()
{
    //输出一段欢迎
    Php::out << "hello world from my first extension" << std::endl;
}

/**
 *  告诉编译器get_module是个纯C函数
 */
extern "C" {
    
    /**
     *  本函数在PHP进程一打开就会被访问,并返回一个描述扩展信息的PHP结构指针
     */
    PHPCPP_EXPORT void *get_module() 
    {
        // 必须是static类型,因为扩展对象需要在PHP进程内常驻内存
        static Php::Extension extension("helloworld", "1.0.0");
        
        //这里可以添加你要暴露给PHP调用的函数
        extension.add<say_hello>("say_hello");
        
        // 返回扩展对象指针
        return extension;
    }
}
로그인 후 복사

test.php는 확장 테스트에 사용되는 PHP 코드 조각입니다.

<?php
say_hello();
로그인 후 복사

3. 첫 번째 확장 helloworld 컴파일

이 확장을 컴파일하는 것은 매우 간단합니다. 터미널 명령줄에 make 명령을 입력하기만 하면 됩니다.

# make
g++ -Wall -c -O2 -std=c++11 -fpic -o main.o main.cpp
g++ -shared -o helloworld.so main.o -lphpcpp
로그인 후 복사

예상대로 소스 디렉터리에 helloworld.so 확장 파일이 표시됩니다. 이 파일은 14K로 매우 작습니다.
하지만 이제 php -m 명령을 입력하면 helloworld 확장이 PHP 운영 환경에 설치되지 않았기 때문에 PHP 모듈에 포함되지 않은 것을 알 수 있습니다.

4. 첫 번째 확장 프로그램 설치 helloworld

여기서는 수동으로 확장 프로그램을 설치하는 방법을 임시로 소개하겠습니다.

  • 1단계: 먼저 php-config 명령을 사용하여 확장 프로그램이 저장된 위치를 확인하세요

# php-config --extension-dir
/usr/local/php56/lib/php/extensions/no-debug-non-zts-20131226
로그인 후 복사

위는 내 서버에서 확장 프로그램이 설치된 위치를 보여줍니다.

  • 2단계: 그런 다음 helloworld.so를 확장 저장소 디렉터리에 복사합니다.

# cp helloworld.so /usr/local/php56/lib/php/extensions/no-debug-non-zts-20131226/
로그인 후 복사
  • 3단계: php.ini 파일 수정 및 helloworld 확장 활성화

php.ini 파일을 열고 다음 구성 항목을 추가한 후 php.ini의 아무 곳에나 새 줄을 추가합니다.

extension = helloworld.so
로그인 후 복사
  • 4단계: helloworld 확장이 성공적으로 설치되었는지 확인하세요

php -m 명령을 사용하여 현재 PHP에 설치된 모든 확장을 확인하세요.

# php -m | grep helloworld
helloworld
로그인 후 복사

위 명령줄의 응답으로 판단하면 helloworld 확장 프로그램이 성공적으로 설치된 것입니다.

  • 5단계: test.php를 실행하여 등록 기능을 사용할 수 있는지 확인

또는 확장 프로그램의 소스 코드 디렉터리에서 다음 명령을 실행합니다.

# php test.php
hello world from my first extension
로그인 후 복사

위 명령줄의 응답에서 등록했습니다. 확장을 통해 PHP로 say_hello 함수가 성공적으로 실행되었습니다. 그런데 현재 확장은 인사만 할 수 있고 더 많은 일을 할 수 있도록 개선하겠습니다.

참고자료

PHP-CPP 설치 및 hello world
PHP-CPP 공식 홈페이지 튜토리얼

관련 추천 :

PHP 확장 개발 관련 개발 기술 비교 및 ​​소개

위 내용은 PHP 확장 개발: 첫 번째 확장 Hello World 작성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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