PHP拡張機能でHelloWorldを作ってみよう!
PHP は多数の便利な関数を提供しますが、たとえば、多数の PECL (PHP Extension Community Library) が拡張機能 (ダイナミック リンク ライブラリ dll ファイル) の形式で提供されるなど、特殊な場合には拡張機能のプログラミングが必要になる場合があります。 PEAR ははるかに効率的に動作します。
PHP 拡張機能は C または C++ で記述されており、使用する前にダイナミック リンク ライブラリ DLL ファイルにコンパイルし、PHP 環境に登録する必要があります。
PHP 拡張機能を作成するためのソフトウェア要件:
VC++6.0またはVC++.NET環境。
PHPのソースコードをコンパイルする必要があります。
PHP のソース コードをコンパイルしたくない場合は、正常にコンパイルされた PHP のバイナリ コード (つまり、PHP ランタイム環境の展開に使用するファイル パッケージ) をダウンロードできます。個別にダウンロードしたソース ファイル パッケージとコンパイル済みパッケージのバージョンは一致している必要があることに注意してください。
プロセス:
1. VC++6.0 をインストールし、その実行可能ファイルのパスを環境変数に追加することを選択して、コマンド ライン環境の任意のパスでコンパイラーを実行できるようにします。
2. PHP 実行環境をインストールし、IIS と正しく統合します。使用されている PHP バージョンが 5.2.5 であると仮定して、php-5.2.5-Win32.zip バイナリ パッケージと php-5.2.5.tar.gz ソース コード パッケージをダウンロードします。インストール環境はC:php-5.2.5-Win32です。ソース コード パッケージとバイナリ パッケージをそれぞれこのフォルダーに抽出します。 php.ini の推奨コピーから php.ini ファイルを生成します。
3. C:php-5.2.5-Win32Release_TS フォルダーを作成し、C:php-5.2.5-Win32devphp5ts.lib ファイルをここにコピーします。
4. C:php-5.2.5-Win32ext フォルダーに入り、次のコマンドを実行します:
C:php-5.2.5-Win32ext>..php.exe ext_skel_win32.php --extname=myphpext
ディレクトリ myphpext の作成
基本ファイルの作成: config.m4 config.w32 .cvsignore myphpext.c php_myphpext.h
クレジット 実験的 testing/001.phpt myphpext.php [完了].
新しい拡張機能を使用するには、次の手順を実行する必要があります:
1. $cd ..
2. $ vi ext/myphpext/config.m4
3. $ ./buildconf
4. $ ./configure --[with|enable]-myphpext
5.$メイク
6. $ ./php -f ext/myphpext/myphpext.php
7. $ vi ext/myphpext/myphpext.c
8. $メイク
ext/myphpext/config.m4 と
に満足するまで手順 3 ~ 6 を繰り返します。
ステップ 6 では、モジュールが PHP にコンパイルされたことを確認してから、書き込みを開始します
。
コードを作成し、最後の 2 つの手順を必要に応じて繰り返します。
結果として、ext の下にフォルダー myphpext が生成されます。このフォルダーには、PHP 拡張アプリケーション プログラミング フレームワークが含まれています。 myphpext には任意の名前を付けることができます。今後生成される dll ファイルの形式は php_[extname].dll です。実行結果のプロンプト情報 1.2...8 は主に Linux/Unix 環境向けの情報ですので、特に注意する必要はありません。実際、Windows では config.m4 ファイルも変更する必要があるかもしれませんが、この単純なフレームワークではまだ必要ありません。
フォルダー myphpext には、以下を含むいくつかのファイルが含まれています:
Myphpext.dsp はプロジェクト ファイルであり、後で使用します。
Myphpext.php 拡張機能テスト ファイル;
php_myphpext.h 拡張関数定義ヘッダファイル
Myphpext.c 拡張機能固有の実装
上記 2 つの重要なファイルの内容:
php_myphpext.h ファイル:
/*
+------------------------------------------------ ------------------------+
| PHP バージョン 5 |
+------------------------------------------------ ------------------------+
| 著作権 (c) 1997-2007 PHP グループ |
+------------------------------------------------ ------------------------+
| このソース ファイルには、PHP ライセンスのバージョン 3.01 が適用されます。|
| これは、ファイル LICENSE 内のこのパッケージにバンドルされており、|
| ワールドワイドウェブから次の URL で入手できます: |
| http://www.php.net/license/3_01.txt |
| PHP ライセンスのコピーを受け取っておらず、PHP ライセンスを取得できない場合|
| ワールドワイドウェブを通じて入手するには、メモを |
までお送りください。
| License@php.net にご連絡いただければ、すぐにコピーをメールでお送りいたします。 |
+------------------------------------------------ ------------------------+
| 著者: |
+------------------------------------------------ ------------------------+
*/
/* $Id: header,v 1.16.2.1.2.1 2007/01/01 19:32:09 iliaa Exp $ */
#ifndef PHP_MYPHPEXT_H
#define PHP_MYPHPEXT_H
extern zend_module_entry myphpext_module_entry;
#define phpext_myphpext_ptr &myphpext_module_entry
#ifdef PHP_WIN32
#define PHP_MYPHPEXT_API __declspec(dllexport)
#else
#define PHP_MYPHPEXT_API
#endif
#ifdef ZTS
#include "TSRM.h"
#endif
PHP_MINIT_FUNCTION(myphpext);
PHP_MSHUTDOWN_FUNCTION(myphpext);
PHP_RINIT_FUNCTION(myphpext);
PHP_RSHUTDOWN_FUNCTION(myphpext);
PHP_MINFO_FUNCTION(myphpext);
PHP_FUNCTION(confirm_myphpext_compiled); /* テストのため、後で削除してください。 */
PHP_FUNCTION(HelloPHP);
/*
BEGIN の間に必要なグローバル変数を宣言します
およびENDマクロはこちら:
ZEND_BEGIN_MODULE_GLOBALS(myphpext)
long global_value;
char *global_string;
ZEND_END_MODULE_GLOBALS(myphpext)
*/
/* すべてのユーティリティ関数で、変数を使用する必要がある関数を追加します
php_myphpext_globals で、TSRMLS_FETCH() を呼び出します。 その他を宣言した後
その関数で使用される変数、またはさらに良いのは、TSRMLS_CC に渡すことです
最後の関数引数の後にユーティリティ関数を宣言します
最後に宣言された引数の後に TSRMLS_DC を付けます。 常に参照してください
関数内のグローバルを MYPHPEXT_G (変数) として指定します。 あなたは
これらのマクロの名前をもっと短いものに変更することをお勧めします。
を参照してください。
他の php モジュール ディレクトリ内の例。
*/
#ifdef ZTS
#define MYPHPEXT_G(v) TSRMG(myphpext_globals_id, zend_myphpext_globals *, v)
#else
#define MYPHPEXT_G(v) (myphpext_globals.v)
#endif
#endif /* PHP_MYPHPEXT_H */
/*
* ローカル変数:
* タブ幅: 4
* c-basic-offset: 4
* 終わり:
* vim600: noet sw=4 ts=4 fdm=marker
* vim
*/
/*
+------------------------------------------------ ------------------------+
| PHP バージョン 5 |
+------------------------------------------------ ------------------------+
| 著作権 (c) 1997-2007 PHP グループ |
+------------------------------------------------ ------------------------+
| このソース ファイルには、PHP ライセンスのバージョン 3.01 が適用されます。|
| これは、ファイル LICENSE 内のこのパッケージにバンドルされており、|
| ワールドワイドウェブから次の URL で入手できます: |
| http://www.php.net/license/3_01.txt |
| PHP ライセンスのコピーを受け取っておらず、PHP ライセンスを取得できない場合|
| ワールドワイドウェブを通じて入手するには、メモを |
までお送りください。
| License@php.net にご連絡いただければ、すぐにコピーをメールでお送りいたします。 |
+------------------------------------------------ ------------------------+
| 著者: |
+------------------------------------------------ ------------------------+
*/
/* $Id: header,v 1.16.2.1.2.1 2007/01/01 19:32:09 iliaa Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "php.h"
#include "php_ini.h"
#include "ext/standard/info.h"
#include "php_myphpext.h"
/* php_myphpext.h でグローバルを宣言している場合は、次のコメントを解除してください:
ZEND_DECLARE_MODULE_GLOBALS(myphpext)
*/
/* 真のグローバル リソース - ここではスレッドの安全性は必要ありません*/
static int le_myphpext;
/* {{{ myphpext_functions[]
*
* ユーザーに表示されるすべての関数には、myphpext_functions[] にエントリが必要です。
*/
zend_function_entry myphpext_functions[] = {
PHP_FE(confirm_myphpext_compiled, NULL) /* テストのため、後で削除してください。 */
PHP_FE(HelloPHP, NULL)
{NULL, NULL, NULL} /* myphpext_functions[] の最後の行である必要があります*/
};
/* }}} */
/* {{{ myphpext_module_entry
*/
zend_module_entry myphpext_module_entry = {
#if ZEND_MODULE_API_NO >= 20010901
STANDARD_MODULE_HEADER、
#endif
「myphpext」、
myphpext_functions、
PHP_MINIT(myphpext)、
PHP_MSHUTDOWN(myphpext)、
PHP_RINIT(myphpext)、 /*リクエスト開始時に何もすることがない場合は、NULL に置き換えます*/
PHP_RSHUTDOWN(myphpext)、/* リクエスト終了時に何もすることがない場合は、NULL に置き換えます*/
PHP_MINFO(myphpext)、
#if ZEND_MODULE_API_NO >= 20010901
"0.1", /* 拡張機能のバージョン番号に置き換えてください*/
#endif
STANDARD_MODULE_PROPERTIES
};
/* }}} */
#ifdef COMPILE_DL_MYPHPEXT
ZEND_GET_MODULE(myphpext)
#endif
/* {{{ PHP_INI
*/
/* php.ini にエントリが必要な場合はコメントを削除し、記入してください
PHP_INI_BEGIN()
STD_PHP_INI_ENTRY("myphpext.global_value", "42", PHP_INI_ALL, OnUpdateLong, global_value, zend_myphpext_globals, myphpext_globals)
STD_PHP_INI_ENTRY("myphpext.global_string", "foobar", PHP_INI_ALL, OnUpdateString, global_string, zend_myphpext_globals, myphpext_globals)
PHP_INI_END()
*/
/* }}} */
/* {{{ php_myphpext_init_globals
*/
/* INI エントリがある場合は、この 関数のコメントを解除します
static void php_myphpext_init_globals(zend_myphpext_globals *myphpext_globals)
{
myphpext_globals->global_value = 0;
myphpext_globals->global_string = NULL;
}
*/
/* }}} */
/* {{{ PHP_MINIT_FUNCTION
*/
PHP_MINIT_FUNCTION(myphpext)
{
/* INI エントリがある場合は、これらの 行のコメントを解除します
REGISTER_INI_ENTRIES();
*/
戻る 成功;
}
/* }}} */
/* {{{ PHP_MSHUTDOWN_FUNCTION
*/
PHP_MSHUTDOWN_FUNCTION(myphpext)
{

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









6月24日の当サイトのニュースによると、6月21日のHDC2024ファーウェイ開発者カンファレンスの基調講演で、ファーウェイ端末BGソフトウェア部門社長のGong Ti氏が、ファーウェイが自社開発したCangjieプログラミング言語を正式に発表した。この言語は 5 年間開発されており、現在開発者プレビューが利用可能です。ファーウェイの公式開発者ウェブサイトは、開発者がプログラミング言語を使い始めて理解しやすくするために、Cangjie プログラミング言語の公式入門チュートリアルビデオを公開しました。このチュートリアルでは、ユーザーが倉街を体験し、倉街を学び、倉街を応用することができます。これには、倉街言語を使用した円周率の推定、2024 年の各月の幹と枝のルールの計算、倉街言語で二分木を表現する N 通りの方法の確認、列挙の使用などがあります。代数計算を実装するタイプ、インターフェイスと拡張機能を使用した信号システム シミュレーション、Cangjie マクロを使用した新しい構文など。このサイトのチュートリアル アクセス アドレス: ht

本サイトは6月21日、本日午後のHDC2024 Huawei Developer Conferenceで、Huawei Terminal BG Software部門のGong Ti社長がHuaweiが自社開発したCangjieプログラミング言語を正式に発表し、HarmonyOSNEXT Cangjie言語の開発者プレビュー版をリリースしたと報じた。ファーウェイがCangjieプログラミング言語を公的にリリースするのはこれが初めてである。 Gong Ti 氏は次のように述べています。「2019 年に、Cangjie プログラミング言語プロジェクトが Huawei で誕生しました。5 年間の研究開発の蓄積と多額の R&D 投資を経て、今日、ついに世界の開発者と出会うことができました。Cangjie プログラミング言語は、最新の言語機能、包括的なコンパイルの最適化、ランタイム実装を統合しています」すぐに使用できる IDE ツール チェーンのサポートにより、開発者にとって使いやすい開発エクスペリエンスと優れたプログラム パフォーマンスが実現します。「レポートによると、Cangjie プログラミング言語はあらゆるシナリオに対応するインテリジェンス ツールです。

6月21日の当サイトのニュースによると、ファーウェイが自社開発した倉街プログラミング言語が本日正式に発表され、公式はHarmonyOSNEXT倉街言語開発者プレビューベータ募集の開始を発表した。このアップグレードは、開発者プレビュー バージョンへの早期導入アップグレードであり、開発者が倉街言語を使用して HarmonyOSNext アプリケーションを開発、デバッグ、実行するための倉街言語 SDK、開発者ガイド、および関連する DevEcoStudio プラグインを提供します。登録期間: 2024 年 6 月 21 日から 2024 年 10 月 21 日まで 応募要件: この HarmonyOSNEXT Cangjie 言語開発者プレビュー ベータ募集イベントは、次の開発者のみが参加できます: 1) Huawei Developer Alliance 認定資格を実名で取得していること。 2) H を完了していること。

6月22日のこのサイトのニュースによると、ファーウェイは昨日、ファーウェイが自社開発したプログラミング言語Cangjieを世界中の開発者に紹介した。 Cangjie プログラミング言語が公に公開されるのはこれが初めてです。当サイトの問い合わせによると、ファーウェイの「蒼傑」の研究開発には天津大学と北京航空航天大学が深く関与していた。天津大学:倉街プログラミング言語コンパイラ 天津大学知能計算学部のソフトウェアエンジニアリングチームは、ファーウェイの倉街チームと協力して、倉街プログラミング言語コンパイラの品質保証研究に深く参加しました。報告によると、Cangjie コンパイラは、Cangjie プログラミング言語と共生する基本ソフトウェアです。 Cangjie プログラミング言語の準備段階では、それに匹敵する高品質のコンパイラが中心的な目標の 1 つになりました。 Cangjie プログラミング言語が進化するにつれて、Cangjie コンパイラは常にアップグレードおよび改善されています。過去5年間、天津大学

6月21日のこのサイトのニュースによると、HDC2024 Huawei Developer Conferenceの前に、Huaweiが自社開発したCangjieプログラミング言語が正式に公開され、Cangjieの公式ウェブサイトがオンラインになりました。公式ウェブサイトの紹介文によると、Cangjie プログラミング言語は、「ネイティブ インテリジェンス、自然なオール シナリオ、高性能、強力なセキュリティ」に焦点を当てた、オール シナリオ インテリジェンスのための新世代プログラミング言語です。 Honmeng エコシステムに統合して、開発者に優れたプログラミング エクスペリエンスを提供します。このサイトに付属する公式 Web サイトでは、AgentDSL を組み込んだネイティブのインテリジェント プログラミング フレームワーク、自然言語とプログラミング言語の有機的な統合、マルチエージェントの連携、簡素化された記号表現、パターンの自由な組み合わせ、さまざまなインテリジェント アプリケーションの開発をサポート、と紹介されています。あらゆるシーンに対応する本質的に軽量でスケーラブルなランタイム、モジュラー階層設計により、メモリがどれほど小さくても、あらゆるシナリオのドメイン拡張に対応できます。

6月21日のニュースによると、本日午後、Huawei Developer Conference 2024が正式に開幕するとのこと。 「純血Hongmeng」Harmony OS NEXTは当然のことながら最優先事項であるYu Chengdong氏が以前に明らかにした計画によれば、今日の午後にパブリックベータ版が正式に発表され、一般消費者も「純血Harmony」を試すことができるようになる。報道によると、最初にサポートされる携帯電話はMate60シリーズとPura70シリーズだという。 「純血のHongmeng」として、HarmonyOSNEXTが従来のLinuxカーネルとAOSP Androidオープンソースコードを削除し、スタック全体を社内で開発したことは注目に値します。 Sina Technologyの最新レポートによると、HuaweiはHongmengエコシステムの最後のリンクも完成し、世界での存在感を拡大する予定です。

2023 年 3 月 14 日に ChatGLM-6B が発売されて以来、GLM シリーズ モデルは幅広い注目と認知を得てきました。特にChatGLM3-6Bがオープンソース化されてからは、Zhipu AIが投入する第4世代モデルに対する開発者の期待が高まっている。 GLM-4-9B のリリースにより、この期待はついに完全に満たされました。 GLM-4-9B の誕生 小型モデル (10B 以下) により強力な機能を提供するために、GLM 技術チームはこの新しい第 4 世代 GLM シリーズ オープン ソース モデル、GLM-4-9B をほぼ半年の期間を経て発売しました。探検。このモデルは、精度を確保しながらモデルサイズを大幅に圧縮し、推論速度の高速化と効率化を実現しています。 GLM 技術チームの調査はまだ終わっていない

51CTO Technology Stack (WeChat ID: blog51cto) が制作、Mistral は最初のコードモデル Codestral-22B をリリースしました!このモデルのすごいところは、多くのコード モデルが無視する Swift などを含む 80 以上のプログラミング言語でトレーニングされていることだけではありません。それらの速度はまったく同じではありません。 Go言語を使用して「パブリッシュ/サブスクライブ」システムを記述する必要があります。ここでは GPT-4o が出力されており、Codestral は、見るのが難しいほど高速で論文を提出しています。発売されたばかりのモデルのため、まだ公的テストは行われていない。しかし、Mistral の担当者によると、Codestral は現在最もパフォーマンスの高いオープンソース コード モデルであるとのことです。写真に興味のある友達は次の場所に移動できます: - 顔を抱きしめる: https
