PHPのdefineについて

php-logo

WordPressのコードを読み始めています。

define関数がよく現れてきて、気になりだしたのでちょっと調べてみました。

今回はPHPのdefine関数について簡単にまとめたいと思います。

簡単に特徴は以下の2点

PHP:define関数の特徴

  1. 一度定義したら変更不可
  2. 定数の名前は文字とアンダースコアと数字

それではそれぞれみていきましょう

定数は一度定義したら変更不可

スクリプト実行中のその内容を変更できません

これは名前の意味ままです。定まった数と書いて定数と読みますね!

定数の名前は文字とアンダースコアと数字

定数の名前として有効な定義は、文字とアンダースコアと数字 が使えます。

但し、 数字は定数の頭文字としては使えません(!)

正規表現 で表すと以下になります。

[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*

\x7f-\xffとはUTF-8でのマルチバイト文字を表しています。

定数を使用する際の注意点

注意点として・・・

大文字を使う

これはPHPの慣例というよりもプログラミング言語全体としての傾向です。

大文字にしていると「おっ、定数なんだな?」って読み手に意識させます。

すなわち可読性(リーダビリティ)の向上というわけです。

単語と単語の間は「_」

単語と単語の間にはアンダースコアを使いましょう。

ちなみにこの名前の付け方(命名規則)をスネークケースといいます。

これは例を見たほうがわかります。

FULLSTACKENGINEER

FULL_STACK_ENGINEER

どっちのほうが読みやすい、分かりやすいかっていうのは当然後者ですよね

つまり、これも可読性が向上する書き方なのです。

名前衝突にご用心

これはグローバル変数として定義しています。

なので、同じ名前があるとエラーとなります。

衝突しないような名前の心がけましょう。

もしくは、名前空間を区切りましょう

namespaceを使えばいいだけです。

まとめ

はい、これはある意味でそのままでしたね。

Javaをやっていた身としてはfinal識別子でないことに驚きました。

PHP5から追加されたfinalはクラスの継承不可としての識別子に留まっているようです。

今回参考にしたのは以下になります。

PHP: 定数 – Manual

以上になります。

みなさんのPHPライフがよりよくなるように祈ってますよ!