這次給大家帶來PHP7基於函數方式使用lib庫案例程式碼分析,PHP7基於函數方式使用lib庫的注意事項有哪些,下面就是實戰案例,一起來看一下。
前言
首先說下什麼是lib庫。lib庫就是一個提供特定功能的一個檔案。可以把它看成是PHP的一個檔案,這個檔案提供一些函數方法。只是這個lib庫是用c或者c++寫的。
使用lib庫的情境。一些軟體已經提供了lib庫,我們就沒必要再重複實現一次。如,原先的mysql擴充,就是使用mysql官方的lib庫進行的封裝。
在本文,我們將建立一個簡單的lib庫,並在擴充中進行封裝調用。
代碼
基礎代碼
這個擴充,我們將在say擴充上增加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.phpstring(12) "www.bo56.com"
代碼解讀
PHP_ADD_LIBRARY_WITH_PATH 是用於指定lib庫的名字,地址等資訊。第一個參數是名字,第二個參數是地址。
在say.c檔案中增加lib庫的標頭檔。使用#include "hello.h"。
相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!
推薦閱讀:
PHP擷取二叉樹鏡像步驟詳解
PHP擷取鏈表從後往前數的節點步驟詳解