「PHP/入門/変数と値」の版間の差分
削除された内容 追加された内容
→未定義変数: なお、webブラウザで閲覧している場合には、ブラウザのログ画面を見ない限りは、一般にエラーメッセージや警告メッセージなどは出ません。 |
→readonlyプロパティ: const と似た仕組みに、PHP 8.1.0 以降のクラスのプロパティのreadonly修飾子があります。 ただし、readonly修飾子はプロパティにしか使えません。 また、クラスはクラススコープの定数「クラス定数」を定義することができます。 「PHP/クラス#コンストラクターとreadonlyプロパティ」および「PHP/クラス#クラス変数とクラス定数」を参照 タグ: 2017年版ソースエディター |
||
290 行
== 定数 ==
PHPには、$で始まる変数とは別に、イミュータブルなオブジェクト=定数を宣言することができます。
;[https://paiza.io/projects/sjCA27ERj4YfyATgn3AqQQ?language=php 例]:<syntaxhighlight lang=php line>
<syntaxhighlight lang="PHP">▼
<?php
const a =
?>
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
</syntaxhighlight>
:定数は変数と違い $ を前置しません。
;定数への代入(エラーになります):<syntaxhighlight lang=php line>
▲<syntaxhighlight lang="PHP">
<?php
const a = 99;
▲$a = 40;
?>
</syntaxhighlight>
PHP Parse error: syntax error, unexpected token "=" in /workspace/Main.php on line 6
▲<syntaxhighlight lang="PHP">
▲$a = 40;
</syntaxhighlight>
: このように、定数への代入はパース時に構文エラーになります。
: また変数と定数は名前空間が異なるので、同じ名前の変数と定数があっても問題ありません。
=== define()は使うべきではない ===
組込み関数 define() を使っても定義できますが
* キーワードも定数として定義できてしまう
* 大文字小文字を区別しない定数が定義できてしまう
*: PHP 8.0.0 以降では無効。この機能を使っていたプログラムはPHP 8.0.0 以降では動きません。
* const 宣言と機能が重複する
というバグ級の仕様上の問題があります。
define()は使うべきではありません。
=== readonlyプロパティ ===
const と似た仕組みに、PHP 8.1.0 以降のクラスのプロパティのreadonly修飾子があります。
ただし、readonly修飾子はプロパティにしか使えません。
また、クラスはクラススコープの定数「クラス定数」を定義することができます。
{{See|PHP/クラス#コンストラクターとreadonlyプロパティ|PHP/クラス#クラス変数とクラス定数}}
== その他 ==
|