[PHP]defineについて

PHP
Pocket

エンジニアを目指すうえでPHPはハードルが高く感じますが、その中で大体出てくるのが「define」ですね。私自身よく理解できていないので早速意味を理解し、メモしていきます。

 

「define」とは?

「define」とは英語訳で「定義する」「限定する」といった意味です。 PHPのdefine関数では定数を定義するという意味です。

PHPやJavascriptには、「定数」と「変数」がありますが、この「定数」は一度宣言するとその後は値の更新ができない値のことをいいます。(逆に値を変えることができるものが変数)。

プログラムの動作の中で、変更してしまうと困るような情報をdefine関数で定義するのが役割となります。

 

define関数で定数を作ってみましょう

PHPでdefine関数を宣言する際の注意点です。定数名に利用できるのは変数と同じく英数字か_(アンダースコア)で、数字が使えるのは2文字目以降となります。 定数名は小文字を利用せず、大文字のみで定義するのが一般的のようですね。

例として、100円の商品に10%の消費税計算をしてみます。

<php define('TAX', 1.10); // 「TAX」という定数に、「1.10」を定義(代入)
 $price = 100; //「$price」という変数に、「100」を代入
 echo '税込' . $price * TAX . '円';// ['税込' + 「(100)×(1.10)」+'円'] を表示しなさい(echo) >
実行結果
税込108円

こんな感じで定数と変数を使ったプログラムを作っていくことができます。

ここでの注意点として、定数は変数と違って呼び出す際に$(ダラー)をつけない点に注意です。

定数についての注意点

大文字と小文字の区別

define関数は定数名の大文字と小文字を明確に区別する関数となっています。

ですが、第三引数にtrueを設定すると大文字と小文字の区別がなくなり、大文字で宣言した場合でも小文字で呼び出すことが可能になります。

<php
define('KURU', 'くる', true);
echo KURU . kuru;
実行結果
くるくる

また、第三引数にfalseを指定すると省略した場合と同じく大文字と小文字が区別されます。

 

defineで定義した値は書き換えられない

 

<php
define('TAX', 1.08); // 消費税
define('TAX', 1.10); // 消費税を変更
echo TAX;
実行結果
Notice: Constant TAX already defined
1.08

このように定数は変更しようとしても書き換わらず、さらに「もう定数宣言されてるよ」といった意味のエラー文がでます。

配列定数の定義

PHP7以降ではdefineで配列を定義することができます。配列の定数なので配列定数と呼ばれます。

 

<php

define('NAME', array(
  '山田',
  '佐藤',
  '小林'
));

echo '身長が一番高いのは' . NAME[0] . 'です';
実行結果
身長が一番高いのは山田です

 

const構文との違い

同じく定数定義できるものにconst構文があります。

define関数とconst構文との違いは、define関数がプログラム内のどこからでも呼び出せるグローバルな定数を宣言できるのに対し、const構文は宣言したクラス内でしか使えないローカルな定数となっています。

プログラム全体からアクセスする可能性がある定数については、define関数で定義するほうが良いようです。逆にそのクラス内でしか使わないような定数は、const構文を用いたほうがいいでしょう。とはいうものの、私はまだプログラムを組めるほどの知識はありませんので、まだ使い分けについてはよく分かっていませんが(^^;)

 

まとめ

  • define関数は定数を定義する為のものである。
  • 定数は変数のように書き換えることはできない
  • define関数の構文は大文字と小文字を区別する点に注意

 

 

Author: エッグ

コメントを残す

メールアドレスが公開されることはありません。