> 백엔드 개발 > PHP 튜토리얼 > PHP 확장 개발 01: 첫 번째 확장

PHP 확장 개발 01: 첫 번째 확장

WBOY
풀어 주다: 2016-07-29 08:58:55
원래의
1026명이 탐색했습니다.

먼저 비즈니스 시나리오에 이러한 확장이 필요하고 ccvita_string이라는 함수를 제공한다고 가정해 보겠습니다. 해당 함수의 주요 기능은 마침표를 반환하는 것입니다. (이 비즈니스 시나리오는 너무 가짜입니다. 한번 살펴보십시오.) 해당 PHP 코드는 다음과 같습니다.

<span>function</span> ccvita_string(<span>$str</span><span>){
     </span><span>$result</span> = '<a href="'.<span>$str</span>.'">Link</a>'<span>;
     </span><span>return</span><span>$result</span><span>;
}</span>
로그인 후 복사

첫 번째 단계는 코드를 생성하는 것입니다
확장용 PHP 개발의 편의를 위해 코드 생성기와 유사한 도구 ext_skel이 제공됩니다. 자세한 내용은 설명을 참조하세요.
먼저 ccvita.skel 파일을 생성합니다. 그 내용은

<span>string</span> ccvita_string(<span>string</span> str)
로그인 후 복사

입니다. 이는 ext_skel에게 우리가 원하는 확장 프로그램에 ccvita_string이라는 함수가 있음을 알려줍니다. 그런 다음

cd MooENV/src/php-<span>5.3</span>.<span>8</span>/ext/<span>.</span>/ext_skel --extname=ccvita --proto=<span>ccvita.skel
cd ccvita</span>/
로그인 후 복사

을 실행합니다. 이때 ccvita의 확장 코드 프레임워크가 나왔습니다.

두 번째 단계는 구성
을 수정한 다음 config.m4 파일을 수정하여 10, 11, 12 세 줄 중 첫 번째 dnl, 즉

을 삭제하는 것입니다. 🎜>

dnl PHP_ARG_WITH(ccvita, for ccvita support,<span>dnl Make sure that the comment is aligned:
dnl </span><span>[</span><span>  --with-ccvita             Include ccvita support</span><span>]</span>)
로그인 후 복사
수정

PHP_ARG_WITH(ccvita, for ccvita support,<span>Make sure that the comment is aligned:
</span><span>[</span><span>  --with-ccvita             Include ccvita support</span><span>]</span>)
로그인 후 복사
세 번째 단계는 기능 구현

소스코드 ccvita.c 파일 수정
찾아 수정 ccvita_string 함수를

<span>PHP_FUNCTION(ccvita_string)
{
    </span><span>char</span> *str =<span> NULL;
    </span><span>int</span> argc =<span> ZEND_NUM_ARGS();
    </span><span>int</span><span> str_len;
    </span><span>char</span> *<span>result;
 
    </span><span>if</span> (zend_parse_parameters(argc TSRMLS_CC, <span>"</span><span>s</span><span>"</span>, &str, &str_len) ==<span> FAILURE) 
        </span><span>return</span><span>;
 
    str_len </span>= spprintf(&result, <span>0</span>, <span>"</span><span><a href=\"%.78s\">Link</a></span><span>"</span><span>, str);
    RETURN_STRINGL(result, str_len, </span><span>0</span><span>); 
}</span>
로그인 후 복사
네 번째 단계, 확장 기능 컴파일

저장 후 컴파일 시작

/usr/local/php/bin/<span>phpize
.</span>/configure --with-php-c/local/php/bin/php-<span>config
</span><span>make</span>
로그인 후 복사
다섯 번째 단계, 확장 추가

이때 모든 것이 잘 된다면 확장은 이미 module/ccvita.so에 있을 것입니다. 다음은 PHP 프로그램이 이를 호출할 수 있도록 이 확장을 PHP에 추가하는 것입니다.

<span>cp</span> modules/ccvita.so /usr/local/php/ext/<span>vim </span>/usr/local/php/etc/<span>php.ini
extension</span>=/usr/local/php/ext/<span>ccvita.so #在php.ini文件最后增加这一行
service php</span>-<span>fpm restart #重启PHP服务
</span><span>cp</span> ccvita.php /data/www/wwwroot/default/
로그인 후 복사

내 github 주소에서 관련 코드를 복제할 수 있습니다. 주소는 https://github.com/KimiChen/PHP-EXT다음에 액세스할 수 있습니다. ccvita.php 파일을 열고 확장 기능을 테스트합니다. 다음 기사에서는 좀 더 심층적인 내용을 다룰 것입니다.

블로그(http://www.ccvita.com/496.html)에서 다시 게시

위 내용은 PHP 확장 개발 01: 첫 번째 확장 내용을 포함하여 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

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