fbpx
  1. HOME
  2. ブログ
  3. エンジニアになろう!
  4. 【PHP】誰も教えてくれないconst(定数)の上手な使い方
PHP const

【PHP】誰も教えてくれないconst(定数)の上手な使い方

PHPの教科書でも詳しく語られないconst(定数)とは?

にゃんこ先生 にゃんこ師匠
今日もプログミング教室はじめるぞ~い!
ミツオカ初心者PG
const(定数)の必要性がよく分からないんです…
にゃんこ師匠 にゃんこ師匠
const…!お主もついにその域に達してしもたか・・・
初心者PG初心者PG
constって、めちゃめちゃ初心者が学ぶようなところですよね?(笑)
にゃんこ師匠 にゃんこ師匠
小娘!なめてんじゃねえぞ!
見習いPG見習いPG
情緒不安定ですか(笑)そういうの、読者が離れるのでやめてください

PHPに関する教科書を見ると、const(定数)はこう書かれています。

「変数とは異なり、値を固定するもの」

これだけでconst(定数)についての説明が終わっていることがよくあります。

const(定数)は一体何のため存在している?

変数については詳しく書かれていることが多いのに、なぜconst(定数)については詳しく記載されていないのでしょう。

なんとも中途半端でつかみどころがなく、変数のオマケで書かれてるように感じてしまうことでしょう。

これでは「一体何のために存在するのか?」どのように使えばいいのかがイメージしにくいわけです。

では、実際に開発の現場ではどのように使われているのか、その一例をご紹介します。

変数の反対が定数?

例えばPHPの教科書にはこのような説明がよく書かれています。

【説明

変数は「値が変わるもの」に対して、定数は「値が固定であるもの」です。

【結果】

yamada

画面には「yamada」と出力されます。

定数を使うことで「yamada」という名前を出力することができるというのですが、この説明だといくつかの疑問が浮かんできます。

にゃんこ先生 にゃんこ師匠
変数$nameに”yamada”を代入してもいいのではないじゃろか?という疑問も沸いてくるじゃろ
ミツオカ初心者PG
変数に入れればいいじゃん!
にゃんこ先生 にゃんこ師匠
そもそも代入しなくても、そのまま print “yamada”; ではダメなんじゃろか?
ミツオカ初心者PG
それで良いとおもいます!
にゃんこ先生 にゃんこ師匠
ヌルイわ!猫舌のワシでもモグモグできるくらいヌルイわ!

このような疑問が生まれてきますが、教科書にはそれ以上の説明はありません。

これではまったく腑に落ちず、( ゚д゚)ポカーンとしてしまった人も多いのではないでしょうか?

定数を使うメリットとは!?

今は、constを使うメリットが感じられないかもしれません。

しかし、実は、使い方次第では大変便利になります。

実際のサイトを想定するとイメージが湧きやすくなると思います。

1つのウェブページに『株式会社●●●の紹介』と、『同社の商品紹介』の記述があり、それぞれに同じリンクが張られていたと仮定します。

通常の場合

普通にHTMLで書くと、こんな感じになりますね。

const(定数)を使った場合

では、constを使ってみます。

URL の前に const をつけ、https://www.●●●.co.jpを代入します。

そうすることにより、<?php print URL; ?>と記述することで、すべてが https://www.●●●.co.jp と表示されます。

【結果】

<a href=”https://www.●●●.co.jp”>株式会社●●●のホームページはこちら</a>
<a href=”https://www.●●●.co.jp”>この商品のメーカーはこちら</a>

このようにconst値にURLを代入することで、いくつもの使いまわしが可能になります。

変数を使った場合

では、仮にconstではなく、変数を使用した場合はどうでしょうか?

【結果】

<a href=”https://www.●●●.co.jp”>株式会社●●●のホームページはこちら</a>
<a href=”https://www.●●●.co.jp”>この商品のメーカーはこちら</a>

結果は同じでした。

では、なんで変数を使っちゃダメなの?

初心者のうちは、シンプルなコードで

レベルが上がるにつれ、コードが長く複雑になっていきます。

その過程で、他の処理の目的で$urlに別の値を代入してしまった場合はどうなるでしょうか?

【結果】

<a href=”https://www.●●●.co.jp”>株式会社●●●社のホームページはこちら</a>
<a href=”https://www.△△△.co.jp“>この商品のメーカーはこちら</a>

「この商品のメーカーはこちら」のリンク先が、https://www.△△△.co.jpという別のページになってしまいました。

今回は、URLのような、まだシンプルなものですが、もし複雑で大きな金融プログラムだったとしたらどうでしょう・・・。数秒で何億円の損失が出るかもしれません。

ゾッとしますね。

しかし、一度代入すると変更できないconstを使っていれば、このようなミスは防ぐことができるのです!

にゃんこ先生 にゃんこ師匠
絶対に値を変更したくない場合はconstを使うこと!
ミツオカ初心者PG
これで安心ね!

もう1つ大きなメリット!

もし、上司から「下のようにA社のURLが変わったので、リンク設定を修正してほしい」と言われたらどうしますか?

変更前:https://www.●●●.co.jp

変更後:https://www.■■■.co.jp

ミツオカ初心者PG
const URL = ‘https://www.■■■.co.jp’に変更すれば全てが変更されるのね!
にゃんこ先生 にゃんこ師匠
正解じゃ!しかも、再代入することはできなのだ!
ミツオカ初心者PG
なるほど!便利!

上記のように、constでURLを設定してたら、1行目のconstへの代入、つまりたった1か所だけの修正で終えてしまうことが可能なのです。

同じリンクが2か所ではなく、3か所、5か所、はたまた他のページにも設定されていたら、この修正だけで相当な手間と時間がかかってしまいます。

なによりリンクが張られている箇所を探すだけでもかなり面倒ですし、修正漏れが出てしまうかもしれません。

このような問題も、同時に一気に解決できてしまうのです。

システムを作った後のことを考えよう!

企業で使われるシステムの場合、多くは作ったらそれで終わりではありません。

また、開発途中やリリース後にこのような急な変更を言われてることは珍しいことではありません。

急に「このシステムの改修をお願い!」と言われて、他の開発者が作ったプログラムを修正する場合だってあります。

そんなことが起こっても普段からconstを使っていれば、「値を固定」しながら「値を一元管理」することができるのです。

この使い方はほんの一例ですが、この考え方を応用することで、constはあらゆる場面で使用する機会が増えることでしょう!

ミツオカ初心者PG
私、constのことを見くびっていたみたい!
にゃんこ先生 にゃんこ師匠
そうじゃな・・・。constを見習ってお主も動じない心を手に入れるのじゃ。
ミツオカ初心者PG
私、constになりたい!constになる!
チャンドラ謎のインド人
constヲワラウモノハconstニナクノデス
ミツオカ初心者PG
誰すかww

~完~

一緒に働いてくれる仲間を募集しております!

ライトコードでは、仲間を募集しております!

当社のモットーは「好きなことを仕事にするエンジニア集団」「エンジニアによるエンジニアのための会社」。エンジニアであるあなたの「やってみたいこと」を全力で応援する会社です。

また、ライトコードは現在、急成長中!だからこそ、あなたにお任せしたいやりがいのあるお仕事は沢山あります。「コアメンバー」として活躍してくれる、あなたからのご応募をお待ちしております!

なお、ご応募の前に、「話しだけ聞いてみたい」「社内の雰囲気を知りたい」という方はこちらをご覧ください。

ライトコードでは一緒に働いていただける方を募集しております!

採用情報はこちら

関連記事