この記事では、PHP7 拡張機能開発における関数メソッドに基づいた lib ライブラリの使用方法を主に紹介し、PHP7 における lib ライブラリ拡張機能のカプセル化と呼び出し関連の操作スキルを例の形式で分析します。参照してください
この記事の例では、PHP7 拡張機能開発における関数ベースの lib ライブラリの使用方法を説明します。参考のために皆さんと共有してください。詳細は次のとおりです:
序文
まず、lib ライブラリとは何かについて話しましょう。は。 lib ライブラリは、特定の機能を提供するファイルです。これは、いくつかの関数メソッドを提供する PHP のファイルとみなすことができます。この lib ライブラリが c または c で書かれているだけです。
lib ライブラリを使用するシナリオ。一部のソフトウェアはすでに lib ライブラリを提供しているため、それを再度実装する必要はありません。たとえば、元の mysql 拡張機能は、公式の mysql lib ライブラリを使用してカプセル化されます。
この記事では、単純な lib ライブラリを構築し、拡張機能でカプセル化された呼び出しを行います。
コード
基本コード
この拡張機能では、say に # を追加します。拡張子##call_lib_fun()。 Say Extension に関連するコードについては、このブログ投稿をお読みください。 PHP7 拡張機能開発 こんにちはワード この記事では拡張機能の作成方法とソースコードのダウンロードを詳しく紹介しました。
コードの実装
ライブラリ ライブラリのビルド
hello.h ファイルを追加します。コードは次のとおりです。#ifndef TEST_HEADER_FILE #define TEST_HEADER_FILE #include <stdlib.h> #include <string.h> char * show_site(); #endifhello.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 では同様です。
次に、
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)
拡張コードの書き込み
Addhello.h# # # 参照。
#include "php_say.h" #include <stdio.h> //下面这行是增加的 #include "hello.h"
メソッドを追加します。コードは次のとおりです。
PHP_FUNCTION(show_site) { char *site = show_site(); RETVAL_STRING(site); free(site); return; }
<?php $result = show_site(); var_dump($result); ?>
実行結果
$php ./test.php string(12) "www.bo56.com"コード解釈
PHP_ADD_LIBRARY_WITH_PATH を使用して名前、アドレスなどを指定します。 libライブラリの。最初のパラメータは名前、2 番目のパラメータはアドレスです。
lib ライブラリのヘッダー ファイルをsay.c ファイルに追加します。 #include "hello.h" を使用します。
拡張コードでは、他のカーネルが提供するメソッドを呼び出すのと同じように、lib ライブラリ内のメソッドを呼び出します。
興味があるかもしれない記事:
以上がPHP拡張開発におけるlibライブラリの利用方法を関数をベースに詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。