이 글은 주로 PHP7 확장 개발에 있어 함수 기반의 lib 라이브러리 활용 방법을 소개하고 있으며, PHP7에서 lib 라이브러리 확장의 캡슐화 및 호출 관련 연산 기술을 예제 형식으로 분석하였습니다. 그것이 모두에게 도움이 되기를 바랍니다.
머리말
먼저 lib 라이브러리가 무엇인지부터 이야기해 보겠습니다. lib 라이브러리는 특정 기능을 제공하는 파일입니다. 이는 일부 함수 메소드를 제공하는 PHP의 파일로 간주될 수 있습니다. 단지 이 lib 라이브러리가 c 또는 c++로 작성되었다는 것뿐입니다.
lib 라이브러리를 사용하는 시나리오. 일부 소프트웨어는 이미 lib 라이브러리를 제공하므로 다시 구현할 필요가 없습니다. 예를 들어 원래 mysql 확장은 공식 mysql lib 라이브러리를 사용하여 캡슐화됩니다.
이 기사에서는 간단한 lib 라이브러리를 구축하고 확장 프로그램에서 캡슐화된 호출을 수행합니다.
Code
기본 코드
이 확장의 경우 say 확장에 call_lib_fun()
을 추가하겠습니다. 확장과 관련된 코드는 이 블로그 게시물을 읽어보세요. PHP7 확장 개발 hello word 이 글에서는 확장 생성 방법을 자세히 소개하고 소스코드 다운로드를 제공했습니다. call_lib_fun()
。say扩展相关代码大家请看这篇博文。PHP7扩展开发之hello word 文中已经详细介绍了如何创建一个扩展和提供了源码下载。
代码实现
建立lib库
增加hello.h文件。代码如下:
#ifndef TEST_HEADER_FILE #define TEST_HEADER_FILE #include <stdlib.h> #include <string.h> char * show_site(); #endif
增加hello.c文件。代码如下:
#include "hello.h" char * show_site() { char *site = malloc(15 * sizeof(char)); strcpy(site, "www.bo56.com"); return site; }
然后使用以下命令生成lib库(动态库)文件:
$ gcc -g -O0 -fPIC -shared -o hello.so ./hello.c
这样在当前目录下就会生成一个hello.so的动态库文件。不同操作系统动态库的扩展名可能不一样。如 windows下是dll,mac下是 dylib,linux下是so。
然后把hello.so拷贝到/usr/local/lib/目录下,命名为hello.so
把hello.h拷贝到/usr/local/include/目录下。
修改config.m4文件
增加扩展对动态库的依赖。主要增加以下几行代码:
PHP_ADD_LIBRARY_WITH_PATH(hello, /usr/local/lib/, SAY_SHARED_LIBADD) PHP_SUBST(SAY_SHARED_LIBADD)
编写扩展代码
增加hello.h
的引用。
#include "php_say.h" #include <stdio.h> //下面这行是增加的 #include "hello.h"
增加show_site()
方法。代码如下:
PHP_FUNCTION(show_site) { char *site = show_site(); RETVAL_STRING(site); free(site); return; }
php调用结果
<?php $result = show_site(); var_dump($result); ?>
执行结果
$php ./test.php string(12) "www.bo56.com"
代码解读
PHP_ADD_LIBRARY_WITH_PATH 是用于指定lib库的名字,地址等信息。第一个参数是名字,第二个参数是地址。
在say.c文件中增加lib库的头文件。使用#include "hello.h"
코드 구현
hello.h 파일을 추가하세요. 코드는 다음과 같습니다. hello.c 파일을 추가합니다. 코드는 다음과 같습니다. 그런 다음 다음 명령을 사용하여 lib 라이브러리(동적 라이브러리) 파일을 생성합니다.hello.h
에 대한 참조를 추가합니다. 🎜🎜🎜rrreee🎜 show_site()
메소드를 추가했습니다. 코드는 다음과 같습니다. 🎜
🎜🎜rrreee🎜🎜php 호출 결과🎜🎜
🎜🎜rrreee🎜실행 결과🎜
🎜🎜 rrreee🎜🎜 코드 해석🎜🎜🎜PHP_ADD_LIBRARY_WITH_PATH는 lib 라이브러리의 이름, 주소 및 기타 정보를 지정하는 데 사용됩니다. 첫 번째 매개변수는 이름, 두 번째 매개변수는 주소입니다. 🎜🎜say.c 파일에 lib 라이브러리의 헤더 파일을 추가하세요. #include "hello.h"
를 사용하세요. 🎜🎜확장 코드에서는 다른 커널에서 제공하는 메소드를 호출하는 것과 마찬가지로 lib 라이브러리에 있는 메소드를 호출합니다. 🎜🎜관련 권장 사항: 🎜🎜🎜Python의 쿠키 처리(2) cookielib 라이브러리 🎜🎜🎜🎜pdflib 라이브러리를 사용하여 PDF 파일의 내용을 읽는 방법🎜🎜🎜🎜Python의 urllib 라이브러리를 사용하여 WEB 양식 제출🎜🎜🎜🎜 🎜
위 내용은 함수를 기반으로 PHP7에서 lib 라이브러리를 사용하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!