
【PHP】誰も教えてくれないconst(定数)の上手な使い方
2021.12.20
目次
PHPの教科書でも詳しく語られないconst(定数)とは?






PHPに関する教科書を見ると、const(定数)はこう書かれています。
「変数とは異なり、値を固定するもの」
これだけでconst(定数)についての説明が終わっていることがよくあります。
const(定数)は一体何のため存在している?
変数については詳しく書かれていることが多いのに、なぜconst(定数)については詳しく記載されていないのでしょう?
なんとも中途半端でつかみどころがなく、変数のオマケで書かれてるように感じてしまうことでしょう。
これでは「一体何のために存在するのか?」どのように使えばいいのかがイメージしにくいわけです。
では、実際に開発の現場ではどのように使われているのか、その一例をご紹介します。
こちらの記事もオススメ!
変数の反対が「定数」?
例えばPHPの教科書にはこのような説明がよく書かれています。
- 変数は「値が変わるもの」
- 定数は「値が固定であるもの」
また、コードで書くと、このようになります。
1 2 3 4 | <?php const NAME = 'yamada'; print NAME; ?> |
【結果】
yamada
画面には「yamada」と出力されます。
定数を使うことで「yamada」という名前を出力することができるというのですが、この説明だといくつかの疑問が浮かんできます。





このような疑問が生まれてきますが、教科書にはそれ以上の説明はありません。
これではまったく腑に落ちず、( ゚д゚)ポカーンとしてしまった人も多いのではないでしょうか?
定数を使うメリットとは!?
今は、constを使うメリットが感じられないかもしれません。
しかし、実は、使い方次第では大変便利になります。
実際のサイトを想定するとイメージが湧きやすくなると思います。
1つのウェブページに『株式会社●●●の紹介』と、『同社の商品紹介』の記述があり、それぞれに同じリンクが張られていたと仮定します。
通常の場合
普通にHTMLで書くと、こんな感じになりますね。
1 2 | <a href="https://www.●●●.co.jp">株式会社●●●のホームページはこちら</a> <a href="https://www.●●●.co.jp">この商品のメーカーはこちら</a> |
const(定数)を使った場合
では、constを使ってみます。
URL の前に const をつけ、https://www.●●●.co.jpを代入します。
そうすることにより、<?php print URL; ?>と記述することで、すべてが https://www.●●●.co.jp と表示されます。
1 2 3 4 | const URL = 'https://www.●●●.co.jp' ~HTMLの記述~ <a href="<?php print URL; ?>">株式会社●●●のホームページはこちら</a> <a href="<?php print URL; ?>">この商品のメーカーはこちら</a> |
【結果】
<a href="https://www.●●●.co.jp">株式会社●●●のホームページはこちら</a>
<a href="https://www.●●●.co.jp">この商品のメーカーはこちら</a>
このようにconst値にURLを代入することで、いくつもの使いまわしが可能になります。
変数を使った場合
では、仮にconstではなく、変数を使用した場合はどうでしょうか?
1 2 3 4 | $url = 'https://www.●●●.co.jp' ~HTMLの記述~ <a href="<?php print $url; ?>">株式会社●●●社のホームページはこちら</a> <a href="<?php print $url; ?>">この商品のメーカーはこちら</a> |
【結果】
<a href="https://www.●●●.co.jp">株式会社●●●のホームページはこちら</a>
<a href="https://www.●●●.co.jp">この商品のメーカーはこちら</a>
結果は同じでした。
では、なんで変数を使っちゃダメなの?
初心者のうちは、シンプルなコードで書くことがでることでしょう。
しかし、レベルが上がるにつれ、コードが長く複雑になっていきます。
その過程で、他の処理の目的で$urlに別の値を代入してしまった場合はどうなるでしょうか?
1 2 3 4 5 6 7 | $url = 'https://www.●●●.co.jp' ~HTMLの記述~ <a href="<?php print $url; ?>">株式会社●●●社のホームページはこちら</a> ~$urlに関する処理~ $url = 'https://www.△△△.co.jp' ~HTMLの記述~ <a href="<?php print $url; ?>">この商品のメーカーはこちら</a> |
【結果】
<a href="https://www.●●●.co.jp">株式会社●●●社のホームページはこちら</a>
<a href="https://www.△△△.co.jp">この商品のメーカーはこちら</a>
「この商品のメーカーはこちら」のリンク先が、https://www.△△△.co.jpという別のページになってしまいました。
今回は、URLのような、まだシンプルなものですが、もし複雑で大きな金融プログラムだったとしたらどうでしょう・・・。
数秒で何億円の損失が出るかもしれません。
ゾッとしますね。
しかし、一度代入すると変更できないconstを使っていれば、このようなミスは防ぐことができるのです!


もう1つ大きなメリット!
さらに、もう1つ。
もし、上司から「下のようにA社のURLが変わったので、リンク設定を修正してほしい」と言われたらどうしますか?
変更前:https://www.●●●.co.jp
変更後:https://www.■■■.co.jp



上記のように、constでURLを設定することで、1行目のconstへの代入で完了します。
つまり、たった1か所だけの修正で終えてしまうことが可能なのです。
同じリンクが2か所ではなく、3か所、5か所、、、
と、数多く設定されていたら、この修正だけで相当な手間と時間がかかってしまいます。
なによりリンクが張られている箇所を探すだけでもかなり面倒ですし、修正漏れが出てしまうかもしれません。
このような問題も、同時に一気に解決できてしまうのです。
オススメ入門書
システムを作った後のことを考えよう!
企業で使われるシステムの場合、多くは作ったらそれで終わりではありません。
また、開発途中やリリース後にこのような急な変更を言われてることは珍しいことではありません。
急に「このシステムの改修をお願い!」と言われて、他の開発者が作ったプログラムを修正する場合だってあります。
そんなことが起こっても普段からconstを使っていれば、「値を固定」しながら「値を一元管理」することができるのです。
この使い方はほんの一例ですが、この考え方を応用することで、constはあらゆる場面で使用する機会が増えることでしょう!
こちらの記事もオススメ!





書いた人はこんな人

- 「好きなことを仕事にするエンジニア集団」の(株)ライトコードです!
ライトコードは、福岡、東京、大阪の3拠点で事業展開するIT企業です。
現在は、国内を代表する大手IT企業を取引先にもち、ITシステムの受託事業が中心。
いずれも直取引で、月間PV数1億を超えるWebサービスのシステム開発・運営、インフラの構築・運用に携わっています。
システム開発依頼・お見積もりは大歓迎!
また、WEBエンジニアとモバイルエンジニアも積極採用中です!
ご応募をお待ちしております!
ITエンタメ2022.05.25COBOL開発者は「コンピューターおばあちゃん」で海軍准将!?グレース・ホッパー
ITエンタメ2022.05.23マイクロソフトの壁は穴だらけ!?デヴィッド・カトラー
ITエンタメ2022.05.13ホーコン・ウィウム・リーが提唱したCSSの過去と未来
ITエンタメ2022.04.28ラスムッセン兄弟が作ったグーグルマップの軌跡