PHP拡張機能ハローワード

Jun 23, 2016 pm 02:31 PM

1. ソースコードをダウンロードします。

まず公式WebサイトにアクセスしてPHPのソースコードをダウンロードします。ここではPHP5.3.5を使用しています

それを開くと、extディレクトリにすべての拡張機能が配置されていることがわかります。変更されたディレクトリには、ext_skel スクリプトが表示されます。以下では、このコマンドを使用して拡張機能の基本アーキテクチャを生成します。

2. 基本フレームワークを作成します

./ext_skel --extname=example
ログイン後にコピー

このコマンドにより、ext ディレクトリにサンプル ディレクトリが生成され、以下のファイルがディレクトリ

#在目录下有不少文件,testmodule.c 和 config.m4 是最重要的example.c             #是我们扩展的主要文件config.m4                    #m4是一个宏解释工具,用来生成我们扩展的makefileCREDITES                    #这个文件没什么太大的作用,只是用来在发布你的扩展的时候附加一些其他信息EXPERIMENTAL           #这个文件只是标志说,这个扩展是实验性的,所以可以不用管它php_example.h    #这个是我们扩展的头文件tests/001.phpt           #这个也是个测试文件,不过使用的是单元测试,阶段测试
ログイン後にコピー

に作成されます。

1. 設定ファイル config.m4 を変更し、以前の dnl を削除します (dnl は m4 ファイル内でコメント化されています)

vi config.m4PHP_ARG_ENABLE(example, whether to enable laiwenhui support,[  --enable-laiwenhui           Enable laiwenhui support])# PHP_ARG_WITH(testmodule, for testmodule support,# Make sure that the comment is aligned:# --with-testmodule             Include testmodule support]) # 这里的with是说明,要启用这个模块,依赖于某些其他模块,这里我们可以暂时不管。# 比如:模块example,如果依赖apxs的话,就需要:# /configure --with-apxs=/usr/local/apache/bin/apxs  --enable-example
ログイン後にコピー

2. 関数を宣言します

ファイル php_example.h ファイルを編集します

vi php_example.h
ログイン後にコピー

find PHP_FUNCTION (confirm_example_compiled); の後に PHP_FUNCTION(test) を追加します


vi example.c
ログイン後にコピー

以下のコードを最後に記述します

/** * 我添加的第一个PHP扩展 * * */PHP_FUNCTION(test){    char *str = NULL;    char *arg = NULL;    int arg_len;    int len;//    str = "Hello my first php extention! ^_^";
ログイン後にコピー
//len = strlen(str);
ログイン後にコピー
//RETURN_STRINGL(str, len, 0); 
ログイン後にコピー
//开始想这样写的可以没效果,不知道为什么不行。难道不支持strlen但是能编译通过。    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arg_len) == FAILURE) {        return;    }    len = spprintf(&str, 0, "Hello my first php extention! ^_^ param %s",arg);    RETURN_STRINGL(str, len, 0);}
ログイン後にコピー
spprintf应该是php的函数。
ログイン後にコピー

4. Zend エンジンに通知するこのサンプルモジュールにはどのような機能がありますか。

検索: zend_function_entry testmodule_functions[] 行、コメントは、使用可能なすべての関数をここで定義する必要があることを意味します。

次のように変更されました:

zend_parse_parameters是PHP的一个函数表示取得参数解析,如果失败返回。
ログイン後にコピー


5. コンパイル

サンプルモジュールを入力します

./configure ?with-php-config=/usr/local/php/bin/php-config

/usr/local/ php /bin/phpize

make

cp modules/example.so /usr/local/php/lib/php/extensions/

次に、php.iniを変更してexample.soを有効にし、最後にWebサービスを再起動します


4. テスト。


 * Every user visible function must have an entry in example_functions[]. */const zend_function_entry example_functions[] = {        PHP_FE(confirm_example_compiled,        NULL)           /* For testing, remove later. */        PHP_FE(test,    NULL)           /* 我的扩展test */        {NULL,NULL, NULL}       /* Must be the last line in example_functions[] */};/* }}} 
ログイン後にコピー

これについては、Brother Bird の記事がよりわかりやすく説明しています。

http://www.laruence.com/2009/04/28/719.html

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Laravelでフラッシュセッションデータを使用します Laravelでフラッシュセッションデータを使用します Mar 12, 2025 pm 05:08 PM

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Laravelテストでの簡略化されたHTTP応答のモッキング Laravelテストでの簡略化されたHTTP応答のモッキング Mar 12, 2025 pm 05:09 PM

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

PHPにおける後期静的結合の概念を説明します。 PHPにおける後期静的結合の概念を説明します。 Mar 21, 2025 pm 01:33 PM

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 Mar 28, 2025 pm 05:12 PM

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

フレームワークセキュリティ機能:脆弱性から保護します。 フレームワークセキュリティ機能:脆弱性から保護します。 Mar 28, 2025 pm 05:11 PM

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

See all articles