オーダーメイドコース
icon
icon

PHPのdefineで定数を定義する方法【初心者向け】

プログラミング初心者向けにPHPのdefine関数を使って定数を定義する方法について解説しています。変数と違い一度データとして格納すると変更できない定数ですが、変数との違いや使い方をぜひ覚えておきましょう。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

ここではdefine関数についてご紹介します。

定数としてデータを格納しておく上で役立つ知識なので、ぜひ書き方を覚えておきましょう。

そもそもPHPが何か分からない場合は、先にPHPとはの記事をご覧ください。

 

なお本記事は、TechAcademyのPHPオンライン講座の内容をもとにしています。

 

defineとは

define関数では定数を定義することができます。

定数とは値(文字列など)を格納できるのですが、変数と異なり一度設定するとプログラムの実行中は変更できません。

また、define関数で指定した定数はプログラム内のどこからでも呼び出せます。
クラスの中からも外からも定数を呼び出すことができます。

一方、同じ定数にクラス定数を定義するconstという構文があります。こちらはクラス内のみで使用する定数を定義できます。

 

大石ゆかり

田島メンター!変数や配列があるのに、定数なんて必要になるんですか?

田島悠介

変数でも代用出来るよね。ただ、定数は値を変更しようとするとエラーを出してくれるので、後で変更しないデータには向いているんだ。

大石ゆかり

決まった値は定数で定義した方が良さそうですね。

田島悠介

そうだね。PHPでの定数の書き方を見てみよう!

 

defineの書き方

defineの書式を以下になります。[ ]はオプションで省略できます。

bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )
返り値 = define (定数名 , 値 [, 文字の区別フラグ] )

「返り値」は定義が成功すればtrue,失敗するえばfalse
「定数名」ここで指定した定数名で値を呼び出すことができます。
「値」定数が呼び出されると、ここで設定した値を返します。
「文字の区別フラグ」でTrueを設定すると大文字小文字を区別しない。
省略するかFALSEを設定すると大文字小文字を区別します。

 

[PR] PHPを学んで未経験からWebエンジニアを目指す方法とは

実際に書いてみよう

それでは実際にdefine関数を使用して、phpのプログラムを書いてみましょう。

 

定数「PHP」を設定する

以下は定数「PHP」を設定します。

<?php
  define("PHP", "ただいま勉強中");
  echo PHP; // "ただいま勉強中" を出力します
  echo php; // "php" が出力される。
?>

 

出力結果

$php 01.php
ただいま勉強中php

 

定数「PHP」を大文字、小文字を区別せずに定義する

以下では大文字・小文字の区別をせずに定数の値が呼び出されます。

<?php
  define("PHP", "ただいま勉強中",true);
  echo PHP; // "ただいま勉強中" を出力します
  echo php; // 小文字でも"ただいま勉強中" を出力します
?>

 

出力結果

$ php 02.php
ただいま勉強中ただいま勉強中

 

定数「two」を動的に設定する

<?php
  define("two", 1 + 1);
  echo two; // 計算した結果が定数となり、"2"を出力します
?>

 

出力結果

$ php 03.php
2

 

おわりに

defineではプログラムのどこからでもアクセスできるグローバルな定数を定義することができます。

変更することが無い値、プログラムのどこからでも呼び出したい値は定数とすることを検討しましょう。ぜひこの機会にdefine関数を覚えましょう。

 

大石ゆかり

定数には大文字でも小文字でも問題ないみたいですね。

田島悠介

そうなんだ。でも、慣例的に定数は大文字にするって、なってたりするんだよね。

大石ゆかり

1+1などの計算結果などもdefineで定義することが出来るんですか?

田島悠介

ちょっと複雑だけど、defineって関数になってるよね。そういう場合、引数に式を書いたり、関数の実行結果を書いたり出来るんだ。

 

また、PHPを勉強していて、

  • もっと効率的に勉強したい
  • 誰かに聞きながら学びたい
  • 自分でWebサービスを作りたい

と思ったことはないでしょうか。

 

そんな方のために、TechAcademyではオンラインブートキャンプPHP/Laravelコースを提供しています。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、オリジナルWebサービスを開発することが可能です。

独学に限界を感じている場合はご検討ください。