Overview

Namespaces

  • SKJ
    • AppException
      • HTTP
      • Logic
      • Runtime

Classes

  • Label

Interfaces

  • AppExceptionInterface

Traits

  • AppExceptionMethods

Exceptions

  • AppException
  • Overview
  • Namespace
  • Class

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
Methods summary
public
# __construct( integer $correctedLine = null )

コンストラクタ

コンストラクタ

クラスの初期化です

Parameters

$correctedLine
ラベルが指し示す場所への行補正

Api

public
# setLabel( string $name, integer $correctLine )

インスタンス内部にラベル作成

インスタンス内部にラベル作成

Parameters

$name
ラベル名称
$correctLine
ラベルが指し示す場所

Api

Properties summary
public static integer $correctedLine

行補正値

行補正値

Api

# 0
public static string $labelPrefix

ラベル接頭詞

ラベル接頭詞

Api

# 'L'
API documentation generated by ApiGen