static method addFinalFilter [line 401]
終了処理で実行されるフィルタを登録します。
終了処理でバッファリングされた出力内容に対して適用されるフィルタを登録します。 フィルタは登録された順序の逆順で実行されます。 従って後から追加されたフィルタの方が先に実行されます。
Tags:
Parameters:
static method addPackageRoot [line 796]
static void addPackageRoot(
string
$packageRoot)
|
|
パッケージルートを追加設定します。
パッケージを検索するルートのディレクトリ(パッケージルート)を追加設定します。 追加設定されたパッケージルートは、それまで設定されていた全てのパッケージルートに優先されて検索されます。
パッケージルートはセキュリティ上の問題とOS互換性の問題より、半角英数とハイフン、アンダーバーで命名されたディレクトリに限定されます。 (Windows環境に限ってドライブレターの":"が許可されます) また物理的に存在するディレクトリである必要があります。
Tags:
Parameters:
static method createDefaultExceptionScreen [line 675]
標準の例外画面を生成して返します。
標準のエラー画面はPROJECTクラスへのプロジェクト内容の設定により、表示が変化します。 PROJECTクラスへプロジェクト名を設定している場合、エラー画面にはAg:PUREのライブラリ名ではなく、プロジェクト名とそのバージョンが表示されます。 また画面下部の著作権表示ではAg:PUREを利用していることを表す"with"が付加されるようになります。
Tags:
Parameters:
static method defaultErrorHandler [line 529]
static void defaultErrorHandler(
int
$errno, string
$errstr, string
$errfile, int
$errline)
|
|
標準のエラーハンドラです。
defaultErrorHandlerメソッドは標準のエラーハンドラとして初期化処理で自動的に登録されます。 以降、実行中に発生したエラーはdefaultErrorHandlerメソッドにより捉えられます。 捉えられたエラーはそれぞれ例外にマッピングされ、スローし直されます。 これにより従来のPHP4までのエラー処理をPHP5から導入された例外処理で捉えることが可能になります。
Ag:PUREではキャッチされた全てのエラーは例外にマッピングされスローされます。 捉えられたエラーはそれぞれ以下の例外にマッピングされます。
E_ERROR、E_CORE_ERROR、E_COMPILE_ERROR、E_USER_ERROR: EErrorException例外にマッピングされます。
E_WARNING、E_CORE_WARNING、E_COMPILE_WARNING、E_USER_WARNING: EWarningException例外にマッピングされます。
E_NOTICE、E_USER_NOTICE: ENoticeException例外にマッピングされます。
E_STRICT: EStrictException例外にマッピングされます。
E_RECOVERABLE_ERROR: ERecoverableErrorException例外にマッピングされます。
E_PARSE: EParseException例外にマッピングされます。
不明なエラーが捉えられた場合、EUnknownException例外にマッピングされます。
注意: set_error_handler関数の制限により、E_ERROR、E_PARSE、E_CORE_ERROR、E_CORE_WARNING、E_COMPILE_ERROR、E_COMPILE_WARNING は実際には捉えられることがないことに注意してください。 これらのエラーではPHPは従来のエラー処理フローを実行します。
Tags:
Parameters:
static method defaultExceptionHandler [line 568]
static void defaultExceptionHandler(
Exception
$except)
|
|
標準の例外ハンドラです。
キャッチされなかった例外は最終的にdefaultExceptionHandlerメソッドにより捉えられます。 捉えられた例外は例外画面に表示され、スクリプトの実行は強制的に停止させられます。
Tags:
Parameters:
static method finalization [line 456]
static string finalization(
string
$buffer)
|
|
PUREクラスの終了処理を行います。
終了処理はinitializationメソッドで有効にされたアウトプットバッファリングが終了する際に実行されます。 終了処理ではバッファリングされた内容を元に、各種の終了フィルタを実行することが出来ます。 終了フィルタが全く指定されていない場合には、終了処理は何もせずにバッファリングされた内容をそのまま出力します。
注意: 終了処理内でパースエラーなどのスクリプトの実行が不可能になる致命的なエラーが発生した場合、エラー内容は画面には表示されずブランク画面が表示されてしまいます。 この様な場合にはPHP標準のエラーログ出力を有効にしていないとエラー内容の追跡が難しくなってしまいます。 特に複雑な終了フィルタを実装する際には注意してください。
Tags:
Parameters:
static method findPackageModules [line 909]
static void findPackageModules(
string
$path, [string
$ext = "inc"], [bool
$unique = true], [bool
$abend = true])
|
|
パッケージに含まれるモジュールの一覧を取得します。
指定のパッケージから指定の拡張子のモジュールを検索して、そのモジュールの一覧を返します。 パッケージの記述方法は以下になります。
- パッケージ内の単一のモジュールを検索する場合、"packageName1.packageName2.moduleName" の様に指定します。
この指定の場合、パッケージルート以下の "packageName1/packageName2" ディレクトリ内で、名前が "moduleName" であり、拡張子が指定の物であるモジュールが検索にヒットします。
- パッケージ単位で一括検索したい場合、"packageName1.packageName2.*" の様に指定します。
この指定の場合、パッケージルート以下の "packageName1/packageName2" に格納されている拡張子が指定の物である全てのモジュールが検索にヒットします。
複数のモジュールが検索にヒットした場合はファイル名の昇順で列挙されます。
パッケージ単位のインポートの場合、モジュールのインポート順序が重要な場合があります。 例えばモジュールsuperClass.incで定義されているクラスをモジュールsubClass.incで定義されるクラスで継承しているとします。 この場合ファイル名順であればsubClass.incが先に読み込まれてしまいますので、パース時に致命的なエラーが発生してしまいます。 この様な状況を回避するためにはパッケージ情報ファイル"package.xml"をパッケージ内に用意します。 package.xmlは以下のような形式で作成される簡単なXMLファイルで、パッケージの略説と、モジュールの一覧、参照順序を定義します。
<?xml version="1.0" encoding="UTF-8" ?>
<package>
<name>Sample Package file</name>
<description>
Package file description.
</description>
<modules>
<module file="superClass.inc" />
<module file="subClass.inc" />
</modules>
</package>モジュールは標準のパッケージルートと、addPackageRoot メソッドによって登録された追加のパッケージルートの双方で検索されます。 複数のパッケージルートで同一名称のモジュールが見つかった場合、返却される一覧は$unique引数の指定に依存します。 $uniqueにtrueを指定した場合、優先されるパッケージルート上のモジュールが優先されて返されます。 即ち、addPackageRoot メソッドによって後から追加されたパッケージルートが最優先になります。 $uniqueにfalseを指定した場合、複数のパッケージルートで見付かった全てのモジュールが列挙されます。 通常、$uniqueにtrueを指定するのはインポートするモジュールを検索する処理、falseを指定するのはマージするリソースモジュールを検索する処理です。
なお、同じ名称を持ったパッケージが複数のパッケージルート配下に存在し、かつ同名のモジュールが存在する場合、上記のモジュールの参照順序は保証されないことに注意してください。
指定のモジュール、パッケージが見付からなかった場合、$abend引数の値により処理が異なります。 $abendが真の場合、モジュールが見付からなければEModuleNotFoundException例外、パッケージが見付からなければEPackageNotFoundException例外がそれぞれ発生します。 $abendが偽の場合、メソッドは空の配列を返します。
Tags:
Parameters:
static method getMessage [line 1155]
static string getMessage(
string
$msgId, [array
$args = false], [string
$msgCategory = "@"])
|
|
メッセージ設定ファイルからメッセージを取得して返します。
メッセージ設定ファイルは標準で"core.message"になり、loadIniメソッドにより取得されます。 プロジェクトで固有のメッセージ設定ファイルを保持したい場合には、addPackageRootメソッドにてパッケージルートを追加し、"core.message"モジュールを設置することでマージすることが出来ます。
$msgId引数にはメッセージIDを渡します。 メッセージIDは設定ファイルにおける値名に相当し、大文字と小文字は区別されません。
$msgCategory引数にはメッセージのカテゴリを渡します。 メッセージカテゴリは設定ファイルにおけるセクション名に相当し、大文字と小文字は区別されません。 省略した場合には無名のセクションに属している値が利用されます。
一般に、メッセージIDにはプレフィックスを定義します。 Ag:PUREでは一般化されたメッセージのメッセージIDには"ERR-"を、 Ag:PUREのコアライブラリが発生させる固有のメッセージIDには"CORE-"を、 Ag:PUREの標準ライブラリが発生させる固有のメッセージIDには"PURE-"を、 Ag:SSXが発生させる固有のメッセージIDには"SSX-"を利用します。 なおプレフィックス"CORE-"、"PURE-"と"SSX-"は予約されています。 またプレフィックス"ERR-"に関してはメッセージID"ERR-00001"から"ERR-09999"を予約しています。 メッセージを追加定義したい場合には"ERR-10000"以降を利用するか、プレフィックスを分けてください。
$args引数にはメッセージに当てはめるパラメータを配列で指定します。 メッセージ内に存在するプレースフォルダに対応するキー名が配列に指定されていれば、対応する値に置き換えられます。 例えば、配列のキーに"key"という文字列が存在した場合、メッセージ中の"{key}"が置き換えられます。
メッセージが取得できない場合、EMessageNotFoundException例外が発生します。
Tags:
Parameters:
static method getStackTrace [line 625]
static array getStackTrace(
$except)
|
|
スタックトレースを生成します。
例外オブジェクトと例外オブジェクトが保持するバックトレース情報より、JAVAのスタックトレースライクな情報を生成して配列に返します。
Tags:
Parameters:
static method hasStatus [line 367]
static bool hasStatus(
int
$flags)
|
|
Ag:PUREのステータスに指定のフラグの何れかが立っているか否かを判定します。
Tags:
Parameters:
static method import [line 1039]
static void import(
string
$path)
|
|
モジュールをインポートします。
importメソッドはAg:PURE標準のモジュールインポート機構を提供します。 インポートされるモジュールはfindPackageModulesメソッドにより拡張子 "inc" のモジュールが検索されます。 また実際のインポート処理はrequire_once関数が利用されますので、二重インポートにより初期化処理が多重に流れるようなこともありません。
一度インポートされたパスはリクエストが終了するまで記憶され、再度のインポートが指定された際にはスキップします。 モジュールのインポートは内部的にはrequire_once言語構造のラッパですのでモジュールの再インポートはありませんが、この処理はパッケージ解析のコストを削減します。
パッケージ名の記述方法に関してはfindPackageModulesメソッドを参照してください。
Tags:
Parameters:
static method initialization [line 413]
static void initialization(
)
|
|
PUREクラスの初期化処理を行います。
initializationメソッドはコアライブラリの初期化処理中に自動的に呼び出されますので、重複して呼び出さないで下さい。 PUREクラスは初期化されるとアウトプットバッファリングを有効にします。 これは標準の例外ハンドラが出力するエラー画面を正常に表示するために重要です。
Tags:
static method isCLI [line 377]
PHPがCLIで実行されているか否かを返します。
Tags:
static method isWindows [line 387]
PHPがWindows上で実行されているか否かを返します。
Tags:
static method loadIni [line 1074]
static array loadIni(
string
$path, [bool
$case = -1])
|
|
設定ファイル(*.ini)を読み込みます。
Ag:PURE管理下のパッケージからINIファイルを読み込み、その解析結果を配列にして返します。 読み込まれるINIファイルは findPackageModules メソッドにより拡張子 "ini" のモジュールが検索されます。
検索結果は二次元配列で返されます。 一次元目はセクション名、二次元目は値名となります。 無名のセクションの値やセクションに属していない値のセクション名は"@"に統一されます。
$case引数にはセクション名と値名を大文字ないし小文字に自動的に統一するか否かを指定します。 省略した場合はセクション名と値名は設定ファイルに記述されている値がそのまま記憶されます。 大文字に統一したい場合にはCASE_UPPER定数、小文字に統一したい場合にはCASE_LOWER定数を指定してください。
複数のINIファイルがヒットした場合、同一セクションの値は同一のセクションにマージして格納されます。 同一セクション内に同一の値名を持つ複数の項目が見つかった場合、先にヒットした方が有効になります。 即ち、同一モジュール内ならば先にヒットした方、同一パッケージ内ならばファイル名が若い方、異なる検索ルートならば後から追加された検索ルート配下の値が優先されます。
Tags:
Parameters:
static method ob_end_clean_all [line 598]
static void ob_end_clean_all(
[bool
$all = false])
|
|
PUREクラスのfinalization出力ハンドラの登録以降に追加された出力バッファに溜め込まれたキャッシュを全て破棄します。
出力ハンドラのリストからPUREクラスのfinalizationメソッドが消滅するまでob_end_clean関数を繰り返します。 主に標準の例外ハンドラでエラー画面を出力する前や、任意の形式のダウンロードを行う前にフィルタを無効化する為に利用します。
なお、PUREクラスのfinalization出力ハンドラの登録以降に追加された出力バッファに限らず全ての出力バッファを破棄したい場合に$all引数にtrueを指定します。
Tags:
Parameters:
static method parsePackage [line 836]
static array parsePackage(
string
$packageName)
|
|
パッケージ名をパースします。
パッケージ名をパースして、妥当性検査の後にパス名部分とモジュール名部分に分割して返します。 返り値は配列になり、0要素がパス名、1要素がモジュール名になります。 パッケージ単位の指定を表す"*"がモジュール名に設定される可能性があることに注意してください。 パースが失敗、ないし妥当性検索に合致しなかった場合にはfalseを返します。
Tags:
Parameters:
static method status [line 345]
Ag:PUREのステータスの取得します。
Tags:
static method testStatus [line 356]
static bool testStatus(
int
$flags)
|
|
Ag:PUREのステータスに指定のフラグが全て立っているか否かを判定します。
Tags:
Parameters: