開発プロセスでは、コードの読みやすさと保守性を考慮して、ext_skel によって生成されたスケルトン ファイルだけでなく、複数のコード ファイルが必ず必要になります。この記事では、複数のコードファイルを扱う際に注意すべき点とその方法を中心に紹介します。
私のコード ファイルは次のとおりです (スラッシュは私の拡張子です)
// ext_skel 生成默认得模块相关的主要文件php_slash.h // 头文件slash.c // 源码文件config.m4 // 编译的时候需要修改的文件
デフォルトで生成されるこのスケルトン ファイルでは、次の手順を実行するだけで新しい拡張機能を完成できます。
删除config.m4的第10-12行开头的注释dnlphpize./configuremake && make install
上記の手順により、dl("slash.so"); を通じてテストできる拡張機能が完成しました。クラスを書く場合は、こちらのリンクの内容で紹介されています。
以下では、新しいクラスとソース コード ファイルの追加、およびそれらをコンパイルおよび構成する方法を紹介します。
新しい php クラス (Slash_Http_Util) を追加し、このクラスに getIv メソッドを追加します。php コードのテスト コードは次のとおりです。
$httpUtil = new Slash_Http_Util();$httpUtil->getIv(); // 会输出 HELLO
ソース コード ファイルlash_http_util.h
#ifndef SLASH_HTTP_UTIL_H#define SLASH_HTTP_UTIL_Hextern zend_class_entry *slash_http_util_ce;PHP_METHOD(slash_http_util, getIv);SLASH_MINIT_FUNCTION(http_util);#endif
ソース コード ファイルlash_http_util.c
#ifdef HAVE_CONFIG_H#include "config.h"#endif#include "php.h"#include "php_ini.h" /* for zend_alter_ini_entry */#include "php_slash.h"#include "slash_http_util.h"zend_class_entry *slash_http_util_ce;PHP_METHOD(slash_http_util, getIv) { php_printf("HELLO"); RETURN_TRUE;}zend_function_entry slash_http_util_methods[] = { ZEND_ME(slash_http_util, getIv, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) PHP_FE_END};SLASH_MINIT_FUNCTION(http_util) { zend_class_entry ce; SLASH_INIT_CLASS_ENTRY(ce, SLASH_CN_HTTP_UTIL, slash_http_util_methods); slash_http_util_ce = zend_register_internal_class(&ce TSRMLS_CC); return SUCCESS;}
上記のコード 新しいクラスの追加が完了し、クラスに getIv というメソッドが追加されます。次に、config.m4 構成ファイルを変更し、ファイルlash_http_util.cを追加する必要があります。 config.m4 の最後から 2 行目まで開きます。 ext_skel によって生成されるデフォルトのコードは
PHP_NEW_EXTENSION(slash,slash.c,$ext_shared)です。 2 つの *.c ファイルの間にスペースがあり、ファイルが存在しないことに注意してください。句読点
PHP_NEW_EXTENSION(slash,slash.c slash_http_util.c, $ext_shared)config.m4 の変更が完了した後も、slash.c ファイルを変更する必要があります。デフォルトでは、このファイルには次のコードが含まれます
PHP_MINIT_FUNCTION(slash){ /* If you have INI entries, uncomment these lines REGISTER_INI_ENTRIES(); */ return SUCCESS;}新しく作成したクラスをそこにロードする必要があります
PHP_MINIT_FUNCTION(slash){ /* If you have INI entries, uncomment these lines REGISTER_INI_ENTRIES(); */ SLASH_STARTUP(http_util); return SUCCESS;}これにより、phpize、configure、make を使用して、新しいクラスが完全に作成されます。最後に、私たちが始めた目標によってテストされました。
注意が必要ないくつかの問題:
1. config.m4 ファイルを変更し、ソース コード ファイルを追加します
2. config.m4 ファイルを変更した後、phpize を再実行する必要があります
3. この新しいクラスを PHP_MINIT_FUNCTION に追加しますモジュールロード機能内。
#define SLASH_CN_HTTP_UTIL "Slash_Http_Util"// {{{ php life cycle redefine#define SLASH_MINIT_FUNCTION(module) PHP_MINIT_FUNCTION(slash_##module)#define SLASH_MSHUTDOWN_FUNCTION(module) PHP_MSHUTDOWN_FUNCTION(slash_##module)#define SLASH_RINIT_FUNCTION(module) PHP_RINIT_FUNCTION(slash_##module)#define SLASH_RSHUTDOWN_FUNCTION(module) PHP_RSHUTDOWN_FUNCTION(slash_##module)#define SLASH_STARTUP(module) PHP_MODULE_STARTUP_N(slash_##module)(INIT_FUNC_ARGS_PASSTHRU)// }}}// {{{ class init mac#define SLASH_INIT_CLASS_ENTRY(ce, name, methods) INIT_CLASS_ENTRY(ce, name, methods)// }}}上記のコードは参照用です。コミュニケーションを歓迎します。

まだ人気があるのは、使いやすさ、柔軟性、強力なエコシステムです。 1)使いやすさとシンプルな構文により、初心者にとって最初の選択肢になります。 2)Web開発、HTTP要求とデータベースとの優れた相互作用と密接に統合されています。 3)巨大なエコシステムは、豊富なツールとライブラリを提供します。 4)アクティブなコミュニティとオープンソースの性質は、それらを新しいニーズとテクノロジーの傾向に適応させます。

PHPとPythonはどちらも、Web開発、データ処理、自動化タスクで広く使用されている高レベルのプログラミング言語です。 1.PHPは、ダイナミックウェブサイトとコンテンツ管理システムの構築によく使用されますが、PythonはWebフレームワークとデータサイエンスの構築に使用されることがよくあります。 2.PHPはエコーを使用してコンテンツを出力し、Pythonは印刷を使用します。 3.両方ともオブジェクト指向プログラミングをサポートしますが、構文とキーワードは異なります。 4。PHPは弱いタイプの変換をサポートしますが、Pythonはより厳しくなります。 5. PHPパフォーマンスの最適化には、Opcacheおよび非同期プログラミングの使用が含まれますが、PythonはCprofileおよび非同期プログラミングを使用します。

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

PHPは、多数のWebサイトとアプリケーションをサポートし、フレームワークを通じて開発ニーズに適応するため、近代化プロセスで依然として重要です。 1.PHP7はパフォーマンスを向上させ、新機能を紹介します。 2。Laravel、Symfony、Codeigniterなどの最新のフレームワークは、開発を簡素化し、コードの品質を向上させます。 3.パフォーマンスの最適化とベストプラクティスは、アプリケーションの効率をさらに改善します。

phphassiblasifly-impactedwebdevevermentandsbeyondit.1)itpowersmajorplatformslikewordpratsandexcelsindatabase interactions.2)php'sadaptableability allowsitale forlargeapplicationsusingframeworkslikelavel.3)

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境
