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プログラミングで挫折しない学習方法を動画で公開中

実際に書いてみよう

それでは実際に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サービスを作りたい
1時間でできる無料体験!

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

 

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

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

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

初心者・未経験でもできる。まずはテックアカデミーに相談しよう

プログラミングを独学で学習していて、このように感じた経験はないでしょうか?

  • ・調べてもほしい情報が見つからない
  • ・独学のスキルが実際の業務で通用するのか不安
  • ・目標への学習プランがわからず、迷子になりそう

テックアカデミーでは、このような 学習に不安を抱えている方へ、マンツーマンで相談できる機会を無料で提供 しています。
30分間、オンラインでどんなことでも質問し放題です。

「受けてよかった」と感じていただけるよう カウンセラーやエンジニア・デザイナー があなたの相談に真摯に向き合います。

「自分に合っているか診断してほしい」
「漠然としているが話を聞いてみたい」

こんなささいな悩みでも大丈夫です。

無理な勧誘は一切ありません ので、まずはお気軽にご参加ください。
※体験用のカリキュラムも無料で配布いたします。(1週間限定)

今なら参加者限定の割引特典付き! 無料相談を予約する