LoginSignup
0
0

PHP 定数について

Posted at

対象読者

こちらの記事と同様

定数とは

定数

「データを入れるための箱」、「名前を付けることができる」という点は、変数と役割は一緒。変数との大きな違いは、「再代入が不可能」であること

定数を使う場合、使わない場合の比較

一度定数を定義すると、プログラム中で使い回せる。また、メンテナンス性が向上するのも便利な点だ。以下に、定数を使わない場合と使う場合のコードの比較を示す。実行結果は同じ。

定数を使わない場合
定数を使わない場合
<?php
    print (100 * 1.1).'<br>';
    print (200 * 1.1).'<br>';
    print (300 * 1.1).'<br>';

    /* 実行結果
        110
        220
        330
    */
?>
  • 1.1(消費税 10%)が、パッと見何の数値を表すのかがわからない(定数名が付いていない
  • もし消費税が変わった場合、1.1(消費税 10%)の所をすべて修正する必要がある(上の例では 3 箇所)
定数を使う場合
定数を使う場合
<?php
    const SALES_TAX = 1.1;    // 消費税率が変わっても修正はこの行のみ
    print (100 * SALES_TAX).'<br>';
    print (200 * SALES_TAX).'<br>';
    print (300 * SALES_TAX).'<br>';

    /* 実行結果
        110
        220
        330
    */
?>
  • 定数 SALES_TAX(消費税 10%)を定義することで、数値の意味がわかりやすい
  • 消費税が変わっても修正は 1 箇所で済む(メンテナンスがラク

定数の宣言

方法 1  const
const で定数を定義
<?php
    const 定数名 = ;
?>
方法 2  define 関数
define 関数で定数を定義
<?php
    define('定数名', );
?>

定数の命名規則

  • ($) は付けない
  • 予約語は避ける
  • 通例、大文字で命名する
  • 定数として定義できる型は限定される

複数の単語を使って定数名を付ける場合は、アンダースコア (_) で区切る。

定数として定義できる型は、 スカラー(boolintfloatstringスカラーを含んだ配列 に限る。

自動的に定義される定数、マジック定数

PHP には、「自動的に定義される定数」、使われる場所によって値が変化する「マジック定数」がある。これらは、const などで宣言することなく使用可。その主な定数を表に示す。

定数 説明
__LINE__ 実行中の行番号
__FILE__ 実行中のファイル名
__DIR__ 実行中のファイルが存在するディレクトリ名
PHP_VERSION PHP バージョン
PHP_MAXPATHLEN ファイル名の長さ (パスを含む) の最大値
PHP_INT_MAX 整数型の最大値

参考までに 佐藤 の開発環境(ローカル)での実行結果

article3.php
<?php
    print '__LINE__:'.__LINE__.'<br>';
    print '__FILE__:'.__FILE__.'<br>';
    print '__DIR__:'.__DIR__.'<br>';
    print 'PHP_VERSION:'.PHP_VERSION.'<br>';
    print 'PHP_MAXPATHLEN:'.PHP_MAXPATHLEN.'<br>';
    print 'PHP_INT_MAX:'.PHP_INT_MAX.'<br>';

    /* 実行結果
        __LINE__:2
        __FILE__:C:\パス\article3.php
        __DIR__:C:\パス
        PHP_VERSION:8.X.X
        PHP_MAXPATHLEN:2048
        PHP_INT_MAX:9223372036854775807(64 ビットの場合)
    */
?>

参考サイト

「自動的に定義される定数」、「マジック定数」は、先に紹介した以外にも多数存在する。詳細は、以下のサイトを参照。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0