Developer

【PHP基礎】変数とは
2020.09.25
Lv1

【PHP基礎】変数とは

■変数とは

変数とは、一言で言うと「データを入れておく箱」です。
データ処理の途中経過のデータを一時的に保管しておく役割を果たしています。
例えば、以下のように書くと「price」という名前の変数の中に「100」という値が保存(代入)されます。

<?php
$price = 100;
echo $price; // 100(price変数の中身が表示されます)
?>

PHP における = は数学/算数のような「左辺と右辺が等しい」という意味ではなく、
「左辺に右辺を代入する」という意味ですので注意してください。(詳しくはこちらの記事で説明します)
また、実は$price = 100;という処理は、変数宣言初期化という2つの処理をまとめたものとなっています。

変数宣言

変数を作成することを変数を宣言すると言います。
要は箱だけ作るイメージです。
この場合、変数に値は入っていません。

<?php
$price;
?>

変数の初期化

空っぽの変数に最初に値を代入することを初期化と言います。
変数は初期化しないと使用することができません。
もし出力などしようとした場合にはエラーとなります。

<?php
$price;
echo $price;
?>

実行結果:Notice: Undefined variable: price
変数宣言していてもUndefined(未定義)と表示されてしまいます。

■変数の命名規則

変数はそれぞれを区別できるように、名前をつけておく必要があります。
しかし名前を付ける際にもルールがあります。

ルール OK NG
変数の先頭には、必ず「$」を付けなければならない $name name
最初の文字($の次の文字)は、
アルファベットかアンダースコア「_」でなくてはならない
$name
$_data
$321
$1data
$以降には、アルファベット、数字、アンダースコア「_」
を使用できる
$name1
$data_1
$name-1
$data#1

また、変数名に使用するアルファベットの大文字と小文字は区別されます。
変数以外にも定数や関数にも自分で名前を付けることができます。
これらの区別するための名前を識別子といいます。

■キャメルケースとスネークケース

上記の命名規則は守らないとエラーとなるのですが、「守らなくてもエラーにはならないけど、守った方が良い」というルールも存在します。
このようなルールは複数人で開発する上で、統一性を持たせるためのルールです。
統一性があるとプログラムの可読性(読みやすさ)が向上します。
ここでは識別子に用いられるルールである、キャメルケーススネークケースについてご紹介します。
2つ以上の単語を組み合わせて識別子を決定する際のルールです。

  1. キャメルケース
  2. ラクダです🐪
    基本小文字で、単語の区切りを大文字にして読みやすくします。
    この大文字がラクダのコブのイメージです。
    また、先頭を大文字にするか小文字にするかでも別れます。
    アッパーキャメルケース(別名パスカルケース):先頭大文字
    ロワーキャメルケース:先頭小文字

  3. スネークケース
  4. ヘビです🐍
    基本小文字で、単語をアンダースコアで区切ります。
    アンダースコア部分がへっこんでウネウネしているのでスネークです。

アッパーキャメルケース
パスカルケース
ロワーキャメルケース スネークケース
sampleとname $SampleName $sampleName $sample_name

データベースなどの識別子では大文字小文字の区別がない場合にはスネークケースが用いられます。
PHPは大文字小文字は区別されますが、スネークケースが用いられることが多いです。
理由はPHPの公式ドキュメントがスネークケースで書かれているからです。
公式で用意されている関数を使用している部分はスネークケースなのに、自作関数がキャメルケースになっていると統一性がなくなってしまいます。
そのためPHPに限らずどの言語でも公式のルールに合わせることが多いです。

以下PHPにおける一般的な命名ルールまとめです

ルール 参考記事
変数名 スネークケース $sample_name
関数名 スネークケース $get_name() 【PHP基礎】関数とは
定数名 スネークケース $SAMPLE_NAME 【PHP基礎】定数とは
クラス名 アッパーキャメルケース $SampleUser 【PHP応用】クラス オブジェクト インスタンス化
メソッド名 スネークケース $get_name() 【PHP応用】メソッド①

PHP基礎 連載目次リンク

PHP基礎 連載目次