do-while(false) 私の場合


do {
    //
    if ($error) {
        break;
    }
    //
} while (false);

【 参考URL 】
try~catch使うほどじゃないけどgotoは嫌だってときのための便利な書き方
do-while(false) を見つけたときの雑感
PHP マニュアル - do-while

(まず、このテクニックのネーミングが欲しいですが、
今回のみ仮称として「ダミーブロック」とします。)

ダミーブロックは私もよく使いますが、書き方が上記とは違います。

無限ループのリスク?

do-while(false) は、falsetrue と書き間違えると、
無限ループの可能性があります。
(0を1と書き間違えても同じ。)

また、最初は正しく書いていても、別の置換で
false → true と うっかり書き換わることも なくはないです。

夜 寝ているときに、
「ダミーブロックで true と書いちゃったかもしれない
と不安になることも ありえます。

(考えすぎと言われれば それまでですが

別の記述法1

do-while(false) の替わりに、
私は しばらく下記を使っていました。

for ( $i = 0; $i <= 0; $i++ ) {
    //
}

for文なので、最初から1回のみループすることが確定しています。

ただ for ( $i = 0; $i <= 0; $i++ ) { の部分が
長いなぁとは思っていました。$i も3回も書かなきゃだし。

しかも $i のどれか1ヶ所を $ii とか $j に書き間違えたら、
これも無限ループになってしまいます。

なので、無限ループになりようがない
別の書き方を模索していました。

別の記述法2

最近 採用しているのが、以下の記述です。

foreach ( array(0) as $dummy ) {
    //
}

array(0) の要素数が1つなので、1回のみループします。
これは さすがに、間違っても無限ループにはならないと思います。
array(0) です。array() ではありません。

ただ as $dummy の部分が邪魔です。
$dummy は使わないから、これを消せれば完璧なのですが。
as 0 とか as null とか試しましたがダメでした。

ちなみに as array() とすると、
T_PAAMAYIM_NEKUDOTAYIM という見慣れないエラーが出ます。