CXXXVII. runkit 関数

導入

runkit 拡張モジュールは、定数・ユーザ定義関数 およびユーザ定義クラスを変更する機能を提供します。 また、独自のスーパーグローバル変数を定義したり、 サンドボックスを利用した組み込みインタプリタの作成も可能です。

この PECL 拡張モジュールをインストールする方法は、 マニュアルの PECL 拡張モジュールのインストール という章にあります。 新規リリース・ダウンロード・ソースファイル・管理者情報・CHANGELOG といった関連する情報については、次の場所にあります。 http://pecl.php.net/package/runkit .

このパッケージには、 classkit パッケージに 取って代わるための機能も含まれています。 ./configure に --enable-runkit=classkit オプションを つけてコンパイルすると、classkit と互換性のある関数や定数を提供します。

インストール手順

この PECL 拡張 モジュールは PHP にバンドルされていません。

この PECL 拡張モジュールをインストールする方法は、 マニュアルの PECL 拡張モジュールのインストール という章にあります。 新規リリース・ダウンロード・ソースファイル・管理者情報・CHANGELOG といった関連する情報については、次の場所にあります。 http://pecl.php.net/package/runkit .

この PECL 拡張モジュール の DLL PHP ダウンロード ページ または http://snaps.php.net/ からダウンロードできます。

要件

定数・関数・クラス・メソッドの変更機能 は、PHP 4 と PHP 5 の全てのリリースで動作します。特別な動作条件はありません。

独自のスーパーグローバル変数 は PHP 4.2.0 以降で使用可能です。

サンドボックスのサポート は、PHP 5.1.0 以降か あるいは TSRM パッチを適用した PHP 5.0.0 が必要です。 どのバージョンの PHP を使用しているかにかかわらず、コンパイル時に --enable-maintainer-zts オプションが必要です。 詳しい情報は、runkit パッケージに含まれる README ファイルを参照ください。

実行時設定

php.ini の設定により動作が変化します。

表 1. Runkit 設定オプション

名前 デフォルト 変更の可否 変更履歴
runkit.superglobal "" PHP_INI_PERDIR  
runkit.internal_override "0" PHP_INI_SYSTEM  
PHP_INI_* 定数の詳細および定義については 付録G を参照してください。

以下に設定ディレクティブに関する 簡単な説明を示します。

runkit.superglobal string

スーパーグローバルとして扱いたい変数名の、カンマ区切りのリストです。 これはシステム全体で利用する php.ini ファイルで指定すべきですが、SAPI の設定によってはディレクトリローカルで指定しても動作するかもしれません。

例 1. php.ini で runkit.superglobal=_FOO,_BAR と指定した場合のスーパーグローバル

<?php
function show_values () {
  echo
"Foo is $_FOO \n " ;
  echo
"Bar is $_BAR \n " ;
  echo
"Baz is $_BAZ \n " ;
}

$_FOO = 'foo' ;
$_BAR = 'bar' ;
$_BAZ = 'baz' ;

/* foo と bar が表示されるが、baz は表示されない */
show_values ();
?>

定義済み定数

以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。

RUNKIT_IMPORT_FUNCTIONS ( integer )

runkit_import() のフラグで、 指定したファイルから通常の関数が読み込まれることを示します。

RUNKIT_IMPORT_CLASS_METHODS ( integer )

runkit_import() のフラグで、 指定したファイルからクラスメソッドが読み込まれることを示します。

RUNKIT_IMPORT_CLASS_CONSTS ( integer )

runkit_import() のフラグで、 指定したファイルからクラス定数が読み込まれることを示します。 このフラグは PHP のバージョン 5.1.0 以降でしか意味を持たないことに 注意しましょう。

RUNKIT_IMPORT_CLASS_PROPS ( integer )

runkit_import() のフラグで、 指定したファイルからクラスのプロパティが読み込まれることを示します。

RUNKIT_IMPORT_CLASSES ( integer )

runkit_import() のフラグで、 RUNKIT_IMPORT_CLASS_* の論理和(ビット OR)を表します。

RUNKIT_IMPORT_OVERRIDE ( integer )

runkit_import() のフラグで、 すでに存在する関数・メソッド・定数 あるいはプロパティが指定された場合に新しい定義で置き換えることを 示します。このフラグが設定されていない場合、すでに定義されている 内容については新しい定義は無視されます。

RUNKIT_ACC_PUBLIC ( integer )

runkit_method_add() の PHP5 限定のフラグです。

RUNKIT_ACC_PROTECTED ( integer )

runkit_method_add() の PHP5 限定のフラグです。

RUNKIT_ACC_PRIVATE ( integer )

runkit_method_add() の PHP5 限定のフラグです。

CLASSKIT_ACC_PUBLIC ( integer )

runkit_method_add() の PHP5 限定のフラグです。 classkit 互換モードが有効になっている場合にのみ定義されます。

CLASSKIT_ACC_PROTECTED ( integer )

runkit_method_add() の PHP5 限定のフラグです。 classkit 互換モードが有効になっている場合にのみ定義されます。

CLASSKIT_ACC_PRIVATE ( integer )

runkit_method_add() の PHP5 限定のフラグです。 classkit 互換モードが有効になっている場合にのみ定義されます。

CLASSKIT_AGGREGATE_OVERRIDE ( integer )

classkit_import() の PHP5 限定のフラグです。 classkit 互換モードが有効になっている場合にのみ定義されます。

RUNKIT_VERSION ( string )

runkit パッケージのバージョンを定義します。

CLASSKIT_VERSION ( string )

runkit パッケージのバージョンを定義します。 classkit 互換モードが有効になっている場合にのみ定義されます。

目次
Runkit_Sandbox  --  Runkit Sandbox クラス -- PHP バーチャルマシン
Runkit_Sandbox_Parent  --  Runkit 反サンドボックス(Anti-Sandbox)クラス
runkit_class_adopt  --  ある基底クラスを、他のクラスを継承させたクラスに変換する。親クラスの適切なメソッドを追加する
runkit_class_emancipate  --  他のクラスを継承しているクラスから継承関係を解消し、 親クラスから継承しているメソッドを取り除く
runkit_constant_add  --  define() と同じだが、クラス定数も指定可能
runkit_constant_redefine  --  定義済みの定数を再定義する
runkit_constant_remove  --  定義済みの定数を削除する
runkit_function_add  --  新しい関数を追加する。 create_function() と同じ
runkit_function_copy  --  関数を別の名前でコピーする
runkit_function_redefine  --  関数の定義を新しい実装で置き換える
runkit_function_remove  --  関数の定義を削除する
runkit_function_rename  --  関数名を変更する
runkit_import  --  ファイルから関数やクラスの定義を読み込み、必要に応じて書き換える
runkit_lint_file  --  指定したファイルの PHP 文法をチェックする
runkit_lint  --  指定した PHP コードの文法をチェックする
runkit_method_add  -- 指定したクラスに、新しいメソッドを動的に追加する
runkit_method_copy  -- あるクラスのメソッドを別のクラスにコピーする
runkit_method_redefine  -- 指定されたメソッドのコードを動的に変更する
runkit_method_remove  -- 指定したメソッドを動的に削除する
runkit_method_rename  -- 指定したメソッドの名前を動的に変更する
runkit_return_value_used  -- 現在の関数の返り値が使用されているかどうかを調べる
runkit_sandbox_output_handler  --  サンドボックス内での出力を取得・処理するための関数を指定する
runkit_superglobals  --  登録されているスーパーグローバルを、数値添字の配列で返す