定数

PHP

定数

定数は普通の変数とは違い代入文ではなく、定数定義専用の関数を使って定義する。グローバルのスコープを持つので、一度定義すればどこからでもその定数名だけで参照できる。

定数名は先頭に $ が付かない点を除いて普通の変数名と同じルールだが、慣例では定数はすべて大文字にする。

$ が先頭につかないので普通のグローバル変数と名前が衝突することはない。

// グローバル空間に定数を定義
// 配列を設定することはできない
define("FOO", 10);

// グローバル空間の定数を参照
FOO;

同じ名前で2回以上定義しようとすると Constant FOO already defined というようなNoticeが発生し、 2回目以降の定義は無視される。

定数の定義で定数名を文字列で指定するのがちょっと気持ち悪い。

定数 | PHP Manual
http://php.net/manual/ja/language.constants.php

オブジェクト定数

クラスの中にメンバーとして定数を定義することもでき、これは上述の定数とは違い、constを付けた代入文で定義する。インスタンスではなくクラスに対して定義するもので、インスタンスごとに異なる値で定義することはできない。

この定数名も先頭に $ を付けず、慣例ではすべて大文字にする。

// クラスの中のメンバーとして定数を定義
// 右辺には関数呼び出しや演算子の含むもの、配列を置くことはできない
// 文字列の連結すらだめ
const BAR = 20;

// クラスの中の定数を参照
HogeClass::BAR;

PHP 5.3からの機能。

オブジェクト定数 | PHP Manual
http://php.net/manual/ja/language.oop5.constants.php

Ruby

アルファベット大文字で始まる識別子が定数になる。これは慣例ではなくRubyの文法である。定数であってもなんと再代入が可能である。ただし再代入は普通は推奨されず、 2度目以降は実行時に警告が表示される。

PI = 3.14

モジュールの中で定義された定数はモジュール名と定数名を二重コロン :: で接続してアクセスできる。

module Foo
  PI = 3.14
end

print Foo::PI

Perl

use const PI => 3.14;

JavaScript

以下のように const を使うと定数になって再代入ができなくなる。ただ、ブラウザによってこの構文のサポート状況はいろいろみたい。

const PI = 3.14;
このサイトは筆者(hydrocul)の個人メモの集合です。すべてのページは永遠に未完成です。
スポンサーリンク