この記事の内容は、PHP 拡張機能開発における最初の拡張機能 hello world の作成を共有することです。必要な友人はそれを参照できます。
PHP 拡張機能は、上級 PHP プログラマーが必要とするスキルの 1 つです。初心者の PHP 拡張機能開発者は、どのようにして成熟した拡張機能を開発し、PHP 開発の高度な分野に参入できるのかを理解する必要があります。この一連の開発チュートリアルでは、入門段階から上級段階まで段階的に説明します。
このチュートリアル シリーズは Linux (centos を推奨) で開発されており、PHP バージョンは 5.6 であり、Linux、git 操作、および C/C++ 基礎に関する一定の経験があることを前提としています。
ご質問があり、連絡する必要がある場合は、QQ 技術交換グループ 32550793 に参加して私と連絡してください。
PHP 拡張機能の開発には使いやすい PHP-CPP フレームワークを使用しています。ある程度の Linux 操作経験と C++ の基礎がある場合は、以下の手順に従って最初の拡張機能を 10 分以内に作成できると思います。出てくる。
以下のデモ動作はすべて Linux CentOS システム上で完了しており、php5.6 シリーズが事前にインストールされています。
PHP-CPP を使用して独自の php 拡張機能をコンパイルする場合は、まず PHP-CPP のソース コードをダウンロードし、コンパイルしてインストールする必要があります。
PHP-CPP には、PHP-CPP (新バージョン) と PHP-CPP-LEGACY という 2 つのフレームワーク ソース コードがあります。
PHP-CPP (新バージョン) は PHP-7 拡張機能の開発に適しており、PHP-CPP-LEGACY はバージョン 5. の拡張機能の開発に適しています。
以下の私たちのオペレーションは、PHP-CPP-LEGACY を例として取り上げています。
git コマンドを知っている場合は、ターミナルのコマンド ラインに次の git コマンドを直接入力できます。
# git clone https://github.com/CopernicaMarketingSoftware/PHP-CPP-LEGACY.git
git を知らなくても問題ありません。ソースコードの Github ウェアハウス URL をブラウザで直接開き、ソースコードの圧縮パッケージをダウンロードして解凍します。ウェアハウス URL は
https:/ です。 /github.com/CopernicaM....
ダウンロードが完了したら、PHP-CPP-LEGACY のソース コード ディレクトリに移動し、make コマンドを入力してソース コードをコンパイルします。コンパイルが完了すると、拡張機能の開発に必要な関連クラス ライブラリが生成されます。
# make
次に、make install コマンドを実行して、生成されたクラス ライブラリと関連する開発ヘッダー ファイルを Linux システムにインストールします。拡張機能がコンパイルされると、ヘッダー ファイルやクラス ライブラリのディレクトリを設定せずに自動的に接続されます。
# sudo make install
最初の拡張機能 helloworld のソース コードは、git コマンドで直接クローンするか、手動でダウンロードできます。
# git clone https://github.com/elvisszhang/phpcpp_helloworld.git
helloworld ソース コード ディレクトリに入り、main.cpp を開くと、次のコード構造が表示されます。すべてに中国語のコメントが追加されています。
最も重要なものは、拡張機能のエントリ関数である get_module 関数です。
#include <phpcpp.h> #include <iostream> //这是PHP里面可以调用的接口函数 void say_hello() { //输出一段欢迎 Php::out << "hello world from my first extension" << std::endl; } /** * 告诉编译器get_module是个纯C函数 */ extern "C" { /** * 本函数在PHP进程一打开就会被访问,并返回一个描述扩展信息的PHP结构指针 */ PHPCPP_EXPORT void *get_module() { // 必须是static类型,因为扩展对象需要在PHP进程内常驻内存 static Php::Extension extension("helloworld", "1.0.0"); //这里可以添加你要暴露给PHP调用的函数 extension.add<say_hello>("say_hello"); // 返回扩展对象指针 return extension; } }
test.php は、拡張テストに使用される php コードの一部です。
<?php say_hello();
この拡張機能のコンパイルは非常に簡単で、ターミナルのコマンド ラインで make コマンドを入力するだけです。
# make g++ -Wall -c -O2 -std=c++11 -fpic -o main.o main.cpp g++ -shared -o helloworld.so main.o -lphpcpp
予想どおり、ソース ディレクトリに helloworld.so 拡張子ファイルが表示されます。このファイルは非常に小さく、わずか 14K であることがわかります。
しかし、ここで php -m コマンドを入力すると、PHP オペレーティング環境に helloworld 拡張機能がインストールされていないため、PHP モジュールに helloworld 拡張機能が含まれていないことがわかります。
ここでは拡張機能を手動でインストールする方法を一時的に紹介します。
ステップ 1: まず、php-config コマンドを使用して、拡張機能が保存されている場所を確認します
# php-config --extension-dir /usr/local/php56/lib/php/extensions/no-debug-non-zts-20131226
上記は、サーバー上の拡張機能がインストールされている場所を示しています。
ステップ 2: 次に、helloworld.so を拡張機能の保存ディレクトリにコピーします。
# cp helloworld.so /usr/local/php56/lib/php/extensions/no-debug-non-zts-20131226/
ステップ 3: php.ini ファイルを変更し、helloworld 拡張機能を有効にする
php.ini ファイルを開き、次の構成項目を追加し、php.ini 内の任意の場所に新しい行を追加します。
extension = helloworld.so
ステップ 4: helloworld 拡張機能が正常にインストールされたことを確認します
現在 php にインストールされているすべての拡張機能を表示するには、php -m コマンドを使用します。
# php -m | grep helloworld helloworld
上記のコマンドラインからの応答から判断すると、helloworld 拡張機能は正常にインストールされています。
ステップ 5: test.php を実行して、登録機能が使用できることを確認します
または、拡張機能のソース コード ディレクトリで次のコマンドを実行します
# php test.php hello world from my first extension
上記のコマンド ラインの応答から、登録しました拡張機能を使用して PHP で Say_hello を実行すると、非常に単純な機能に感じられますか? しかし、現在の拡張機能は hello を言うだけで、本格的なことは何もできません。今後、さらに多くのことを実行できるように改良します。
PHP-CPPのインストールとhello world
PHP-CPP公式Webサイトのチュートリアル
関連推奨事項:
以上がPHP 拡張機能の開発: 最初の拡張機能 hello world の作成の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。