Skip to content

Commit

Permalink
Merge pull request #3 from ray-di/docs
Browse files Browse the repository at this point in the history
Translate comments from Japanese to English
  • Loading branch information
koriym authored Jul 7, 2024
2 parents 4241cc0 + 2bdff3b commit 8448884
Show file tree
Hide file tree
Showing 4 changed files with 299 additions and 280 deletions.
9 changes: 7 additions & 2 deletions Makefile.frag
Original file line number Diff line number Diff line change
@@ -1,16 +1,21 @@
# Clean up test artifacts
clean-tests:
rm -f tests/*.diff tests/*.exp tests/*.log tests/*.out tests/*.php tests/*.sh

# Perform a thorough cleanup, including test artifacts and build files
mrproper: clean clean-tests
rm -rf autom4te.cache build modules vendor
rm -f acinclude.m4 aclocal.m4 config.guess config.h config.h.in config.log config.nice config.status config.sub \
configure configure.ac install-sh libtool ltmain.sh Makefile Makefile.fragments Makefile.global \
Makefile.objects missing mkinstalldirs run-tests.php *~
configure configure.ac install-sh libtool ltmain.sh Makefile Makefile.fragments Makefile.global \
Makefile.objects missing mkinstalldirs run-tests.php *~

# Display information about the extension
info: $(all_targets)
"$(PHP_EXECUTABLE)" -d "extension=$(phplibdir)/$(PHP_PECL_EXTENSION).so" --re "$(PHP_PECL_EXTENSION)"

# Generate package.xml file
package.xml: php_$(PHP_PECL_EXTENSION).h
$(PHP_EXECUTABLE) build-packagexml.php

# Declare phony targets (targets that don't represent files)
.PHONY: all clean install distclean test prof-gen prof-clean prof-use clean-tests mrproper info
18 changes: 9 additions & 9 deletions config.m4
Original file line number Diff line number Diff line change
@@ -1,37 +1,37 @@
dnl $Id$
dnl config.m4 for extension rayaop

dnl PECLの設定マクロをインクルード
dnl Include PECL configuration macro
dnl link https://github.com/php/pecl-tools/blob/master/autoconf/pecl.m4
sinclude(./autoconf/pecl.m4)

dnl PHP実行ファイルの検出マクロをインクルード
dnl Include macro for detecting PHP executable
dnl link https://github.com/php/pecl-tools/blob/master/autoconf/php-executable.m4
sinclude(./autoconf/php-executable.m4)

dnl PECL拡張の初期化
dnl Initialize PECL extension
dnl link https://github.com/php/pecl-tools/blob/master/pecl.m4#L229
PECL_INIT([rayaop])

dnl 拡張機能を有効にするかどうかの設定オプションを追加
dnl Add configuration option to enable the extension
dnl link https://www.gnu.org/software/autoconf/manual/autoconf-2.68/html_node/External-Shell-Variables.html
PHP_ARG_ENABLE(rayaop, whether to enable rayaop, [ --enable-rayaop Enable rayaop])

dnl 拡張機能が有効な場合の処理
dnl Process if the extension is enabled
if test "$PHP_RAYAOP" != "no"; then
dnl 拡張機能が有効かどうかを定義
dnl Define whether the extension is enabled
dnl link https://www.gnu.org/software/autoconf/manual/autoconf-2.68/html_node/Defining-Variables.html
AC_DEFINE(HAVE_RAYAOP, 1, [whether rayaop is enabled])

dnl PHPの新しい拡張機能を追加
dnl Add new PHP extension
dnl link https://www.phpinternalsbook.com/build_system/build_system.html
PHP_NEW_EXTENSION(rayaop, rayaop.c, $ext_shared)

dnl Makefileフラグメントを追加
dnl Add Makefile fragment
dnl link https://www.phpinternalsbook.com/build_system/build_system.html#php-add-makefile-fragment
PHP_ADD_MAKEFILE_FRAGMENT

dnl ヘッダーファイルのインストール指示を追加
dnl Add instruction to install header files
dnl link https://www.phpinternalsbook.com/build_system/build_system.html#php-install-headers
PHP_INSTALL_HEADERS([ext/rayaop], [php_rayaop.h])
fi
130 changes: 65 additions & 65 deletions php_rayaop.h
Original file line number Diff line number Diff line change
@@ -1,91 +1,91 @@
#ifndef PHP_RAYAOP_H // PHP_RAYAOP_Hが定義されていない場合
#define PHP_RAYAOP_H // PHP_RAYAOP_Hを定義(ヘッダーガード)
#ifndef PHP_RAYAOP_H // If PHP_RAYAOP_H is not defined
#define PHP_RAYAOP_H // Define PHP_RAYAOP_H (header guard)

#ifdef HAVE_CONFIG_H // HAVE_CONFIG_Hが定義されている場合
#include "config.h" // config.hをインクルード
#ifdef HAVE_CONFIG_H // If HAVE_CONFIG_H is defined
#include "config.h" // Include config.h
#endif

#include "php.h" // PHP核のヘッダーファイルをインクルード
#include "php_ini.h" // PHP INI関連のヘッダーファイルをインクルード
#include "ext/standard/info.h" // 標準拡張モジュールの情報関連ヘッダーをインクルード
#include "zend_exceptions.h" // Zend例外処理関連のヘッダーをインクルード
#include "zend_interfaces.h" // Zendインターフェース関連のヘッダーをインクルード
#include "php.h" // Include PHP core header file
#include "php_ini.h" // Include PHP INI related header file
#include "ext/standard/info.h" // Include standard extension module information related header
#include "zend_exceptions.h" // Include Zend exception handling related header
#include "zend_interfaces.h" // Include Zend interface related header

#ifdef ZTS // スレッドセーフモードの場合
#include "TSRM.h" // Thread Safe Resource Managerをインクルード
#ifdef ZTS // If in thread-safe mode
#include "TSRM.h" // Include Thread Safe Resource Manager
#endif

#define PHP_RAYAOP_VERSION "1.0.0" // RayAOP拡張機能のバージョンを定義
#define RAYAOP_NS "Ray\\Aop\\" // RayAOPの名前空間を定義
#define PHP_RAYAOP_VERSION "1.0.0" // Define RayAOP extension version
#define RAYAOP_NS "Ray\\Aop\\" // Define RayAOP namespace

extern zend_module_entry rayaop_module_entry; // rayaopモジュールエントリを外部参照として宣言
#define phpext_rayaop_ptr &rayaop_module_entry // rayaopモジュールへのポインタを定義
extern zend_module_entry rayaop_module_entry; // Declare rayaop module entry as external reference
#define phpext_rayaop_ptr &rayaop_module_entry // Define pointer to rayaop module

#ifdef PHP_WIN32 // Windows環境の場合
#define PHP_RAYAOP_API __declspec(dllexport) // DLLエクスポート指定
#elif defined(__GNUC__) && __GNUC__ >= 4 // GCC 4以上の場合
#define PHP_RAYAOP_API __attribute__ ((visibility("default"))) // デフォルトの可視性を指定
#else // その他の環境
#define PHP_RAYAOP_API // 特に指定なし
#ifdef PHP_WIN32 // If in Windows environment
#define PHP_RAYAOP_API __declspec(dllexport) // Specify DLL export
#elif defined(__GNUC__) && __GNUC__ >= 4 // If using GCC 4 or later
#define PHP_RAYAOP_API __attribute__ ((visibility("default"))) // Specify default visibility
#else // For other environments
#define PHP_RAYAOP_API // No specific definition
#endif

#ifdef ZTS // スレッドセーフモードの場合
#include "TSRM.h" // Thread Safe Resource Managerを再度インクルード(冗長だが安全のため)
#ifdef ZTS // If in thread-safe mode
#include "TSRM.h" // Include Thread Safe Resource Manager again (redundant but for safety)
#endif

// デバッグ出力用マクロ
#ifdef RAYAOP_DEBUG // デバッグモードが有効な場合
#define RAYAOP_DEBUG_PRINT(fmt, ...) php_printf("RAYAOP DEBUG: " fmt "\n", ##__VA_ARGS__) // デバッグ出力マクロを定義
#else // デバッグモードが無効な場合
#define RAYAOP_DEBUG_PRINT(fmt, ...) // 何もしない
// Macro for debug output
#ifdef RAYAOP_DEBUG // If debug mode is enabled
#define RAYAOP_DEBUG_PRINT(fmt, ...) php_printf("RAYAOP DEBUG: " fmt "\n", ##__VA_ARGS__) // Define debug output macro
#else // If debug mode is disabled
#define RAYAOP_DEBUG_PRINT(fmt, ...) // Do nothing
#endif

// エラーコード
#define RAYAOP_ERROR_MEMORY_ALLOCATION 1 // メモリ割り当てエラーのコード
#define RAYAOP_ERROR_HASH_UPDATE 2 // ハッシュ更新エラーのコード
// Error codes
#define RAYAOP_ERROR_MEMORY_ALLOCATION 1 // Error code for memory allocation
#define RAYAOP_ERROR_HASH_UPDATE 2 // Error code for hash update

/**
* インターセプト情報を保持する構造体
* link: http//://www.phpinternalsbook.com/php5/classes_objects/internal_structures_and_implementation.html
* Structure to hold intercept information
* link: http://www.phpinternalsbook.com/php5/classes_objects/internal_structures_and_implementation.html
* link: http://php.adamharvey.name/manual/ja/internals2.variables.tables.php
*/
typedef struct _intercept_info {
zend_string *class_name; // インターセプト対象のクラス名
zend_string *method_name; // インターセプト対象のメソッド名
zval handler; // インターセプトハンドラー
zend_string *class_name; // Class name to intercept
zend_string *method_name; // Method name to intercept
zval handler; // Intercept handler
} intercept_info;

// 関数宣言
PHP_MINIT_FUNCTION(rayaop); // モジュール初期化関数
PHP_MSHUTDOWN_FUNCTION(rayaop); // モジュールシャットダウン関数
PHP_RINIT_FUNCTION(rayaop); // リクエスト初期化関数
PHP_RSHUTDOWN_FUNCTION(rayaop); // リクエストシャットダウン関数
PHP_MINFO_FUNCTION(rayaop); // モジュール情報関数

PHP_FUNCTION(method_intercept); // メソッドインターセプト関数

// ユーティリティ関数の宣言
void rayaop_handle_error(const char *message); // エラーハンドリング関数
bool rayaop_should_intercept(zend_execute_data *execute_data); // インターセプトの必要性を判断する関数
char* rayaop_generate_intercept_key(zend_string *class_name, zend_string *method_name, size_t *key_len); // インターセプトキーを生成する関数
intercept_info* rayaop_find_intercept_info(const char *key, size_t key_len); // インターセプト情報を検索する関数
void rayaop_execute_intercept(zend_execute_data *execute_data, intercept_info *info); // インターセプトを実行する関数
void rayaop_free_intercept_info(zval *zv); // インターセプト情報を解放する関数

#ifdef RAYAOP_DEBUG // デバッグモードが有効な場合
void rayaop_debug_print_zval(zval *value); // zval値をデバッグ出力する関数
void rayaop_dump_intercept_info(void); // インターセプト情報をダンプする関数
// Function declarations
PHP_MINIT_FUNCTION(rayaop); // Module initialization function
PHP_MSHUTDOWN_FUNCTION(rayaop); // Module shutdown function
PHP_RINIT_FUNCTION(rayaop); // Request initialization function
PHP_RSHUTDOWN_FUNCTION(rayaop); // Request shutdown function
PHP_MINFO_FUNCTION(rayaop); // Module information function

PHP_FUNCTION(method_intercept); // Method intercept function

// Utility function declarations
void rayaop_handle_error(const char *message); // Error handling function
bool rayaop_should_intercept(zend_execute_data *execute_data); // Function to determine if interception is necessary
char* rayaop_generate_intercept_key(zend_string *class_name, zend_string *method_name, size_t *key_len); // Function to generate intercept key
intercept_info* rayaop_find_intercept_info(const char *key, size_t key_len); // Function to search for intercept information
void rayaop_execute_intercept(zend_execute_data *execute_data, intercept_info *info); // Function to execute interception
void rayaop_free_intercept_info(zval *zv); // Function to free intercept information

#ifdef RAYAOP_DEBUG // If debug mode is enabled
void rayaop_debug_print_zval(zval *value); // Function to debug print zval value
void rayaop_dump_intercept_info(void); // Function to dump intercept information
#endif

ZEND_BEGIN_MODULE_GLOBALS(rayaop) // rayaopモジュールのグローバル変数の開始
HashTable *intercept_ht; // インターセプトハッシュテーブル
zend_bool is_intercepting; // インターセプト中フラグ
ZEND_END_MODULE_GLOBALS(rayaop) // rayaopモジュールのグローバル変数の終了
ZEND_BEGIN_MODULE_GLOBALS(rayaop) // Start of rayaop module global variables
HashTable *intercept_ht; // Intercept hash table
zend_bool is_intercepting; // Intercepting flag
ZEND_END_MODULE_GLOBALS(rayaop) // End of rayaop module global variables

#ifdef ZTS // スレッドセーフモードの場合
#define RAYAOP_G(v) TSRMG(rayaop_globals_id, zend_rayaop_globals *, v) // グローバル変数アクセスマクロ(スレッドセーフ版)
#else // 非スレッドセーフモードの場合
#define RAYAOP_G(v) (rayaop_globals.v) // グローバル変数アクセスマクロ(非スレッドセーフ版)
#ifdef ZTS // If in thread-safe mode
#define RAYAOP_G(v) TSRMG(rayaop_globals_id, zend_rayaop_globals *, v) // Global variable access macro (thread-safe version)
#else // If in non-thread-safe mode
#define RAYAOP_G(v) (rayaop_globals.v) // Global variable access macro (non-thread-safe version)
#endif

#endif /* PHP_RAYAOP_H */ // ヘッダーガードの終了
#endif /* PHP_RAYAOP_H */ // End of header guard
Loading

0 comments on commit 8448884

Please sign in to comment.