Class Label
ラベル作成
ソースファイルの行番号ベースの定数ラベルを作成します
◆詳細◆
基本的なラベル作成は下記のような形となる(行頭の数字はソースラベル行)
1:$label = new Label(1); // 引数は行補正 2:$label->L01(); // 基本的なラベル作成方法 3:$label->L02(-1); // 引数は別の行補正値を渡せる 4:Label::L03(); // 静的コンテキストでも可能 5:echo $label->L_L01; // 2(実際のソース上のラベル作成行) 6:echo $label->L_L02; // 2(実際のソース上のラベル作成行+コンストラクタの行補正) 7:echo L_L03; // 3(静的に作成した場合は定数のみで参照可能)
実際の使用方法はphp-app-exceptionと組み合わせて下記のように使用される
use SKJ\Label; function selectUser($name) { if(!($result = readDbByUser($name))){ throw new \SKJ\AppException('user not found!!'); } return $result; } try { Label::L001();$result = selectUser('佐藤'); Label::L002(1); // ラベルが指し示したい行が次行なので行補正で1を渡す $result = selectUser('鈴木'); var_dump($result); } catch (\SKJ\AppException $e) { // 受け取った例外がこのスコープの何行目で発生したものかで分岐 switch ($e->getLineInCurrentContext()) { case L_L001: die('佐藤さんは在籍していません!!'); case L_L002: die('鈴木さんは在籍していません!!'); } }
例外キャッチ時にキャッチと同一スコープ上のどの行から発生した例外か識別できる
これはtry~catch間で同一の関数、メソッドを複数回呼び出す(例外が同一クラス、同一例外コードで返ってくる)ようなケースで利用できる
※なお、発生行はセミコロンのある行となる
例) 01: Label::L001();$users = selectUsers( 02: 'where deleted=0', 03: 'order by index desc' 04: );
このようなケースでは例外の発生行は4となる
Namespace: SKJ
Package: SKJ\Label
Copyright: 2019 Seikouhou.
License: MIT
Author: y3high y3public@49364.net
Since: Class available since Release 0.8.0
Located at Label.php
Package: SKJ\Label
Copyright: 2019 Seikouhou.
License: MIT
Author: y3high y3public@49364.net
Since: Class available since Release 0.8.0
Located at Label.php
public
|
|
public
|
public static
integer
|
$correctedLine
行補正値 |
#
0
|
public static
string
|
$labelPrefix
ラベル接頭詞 |
#
'L'
|