「PHP/Webアプリケーション向けの機能」の版間の差分

削除された内容 追加された内容
→‎スカラ値つきのenum: 修正。nameプロパティは要素名へのアクセスだった
→‎スカラ値つきのenum: さて、enumで定義した整数値を使って計算したい場合、下記のように<code>->value</code>プロパティで代入値にアクセスする必要があります。
565 行
enum に整数型(int)または文字列型(string)の値をつけることが可能です。
 
enumの要素に関連づけられた数値にアクセスする場合、下記コードのように <code>->value</code> が必要です。これは整数型でも文字列型でも、ともに <code>->value</code> です。なお int も string もつけず <code>->value</code>でアクセスするのは非推奨であり、警告されます。(<code>Warning: Undefined property:</code> などの文字列。またintを宣言せずにenumを使用した場合に各要素の代入される数値は現状、0,1,2,3・・・'''ではない'''です。なので、値つき宣言して無い場合には、代入値の順番や大小などは一切当てにしないのが安全でしょう。)
 
なお、enum要素名(下記コード例でなら"buki"や"tate"の部分のこと)にアクセスする場合には <code>->name</code>になります。
 
なおそのほか、enum要素名(下記コード例でなら"buki"や"tate"の部分のこと)にアクセスする場合には <code>->name</code> になります。現状、<code>->name</code> プロパティはint宣言やstring宣言とは無関係に使えます。
valueというプロパティは、enumをintまたはstringに関連づけて宣言しおえた段階までに自動で生成されます。よって、プログラマー側でvalueプロパティを宣言する必要はありません。nameプロパティも同様です。
 
つまり valueというプロパティは、enumをintまたはstringに関連づけて宣言しおえた段階までに自動で生成されます。よって、プログラマー側でvalueプロパティを宣言する必要はありません。nameプロパティも同様宣言の必要は無いです。
 
また、<code>value</code>以外のデタラメな文字列(たとえば「vabqe」)とかのプロパティを書いてもエラーになります。
597 ⟶ 598行目:
?>
</syntaxhighlight>
:(※ 2021年11121803日にPHP8.1-RC6 リリース版を、Fedora 35上でビルドして動作確認。)
 
 
607 ⟶ 608行目:
なお、C言語やPythonなど他の一部の言語では自動的にスカラー値を付ける機能があるのですが、しかしPHPでは現状ではまだそのような機能や仕様は知られていません(2021年に本文を記述)。なおC言語ではこのような機能があるので、switch文のラベルの番号付けの省略としてenumを応用する例が有名です。
 
さて、enumで定義した整数値を使って計算したい場合、下記のように<code>(int)->value</code>命令などプロパティ型変換代入値にアクセスする必要があります。
 
コード例
630 ⟶ 631行目:
}?>
</syntaxhighlight>
:(※ 2021年11121803日にPHP8.1-RC6 リリース版を、Fedora 35上でビルドして動作確認。)
 
実行結果