こんにちは、Art Directorの奥田です。
2017年も気づけば年の瀬ですね。ウィルスタイルもスタッフが増え、賑やかになりました。
これからも新しいスタッフに刺激をもらいながら更に良いものを制作していきたいと思います。
さて、前回は「PHPとは?」というタイトルでPHPの基本的なことをご説明しました。
今回はプログラミングにはなくてはならない存在の「変数と定数」について書いていきたいと思います。
Table of contents
変数とは?
変数とは前回も少しだけ説明しましたが「値を格納できる箱のようなもの」です。
変数には「$(ダラー)」から始まる任意の名前をつけることができます。
また、代入演算子(=)で右から左に値を代入することができます。
$foo = 'Hello'; // 変数「$foo」に文字列「'Hello'」を代入 $bar = 1; // 変数「$bar」に整数「1」を代入
「’(シングルクォーテーション)」や「”(ダブルクォーテーション)」で囲っているのは文字列を表しています。
しかし、整数は囲っていません。これはPHPでは文字列は必ず「’(シングルクォーテーション)」や「”(ダブルクォーテーション)」で囲う必要があるためです。
PHPには「真偽」「整数」「文字列」「配列」「関数」「オブジェクト」など、「型」というものが存在します。詳しくは今回は割愛しますが、PHPの変数はあらゆるものを宣言せずに代入することができます。
変数名に使える文字
変数名には任意の名前をつけられるとはいえルールが存在します。
変数名には「文字」「数字」「アンダースコア」以外は使えません。また、変数名の中で数字を使うことはできますが数字から始まる名前は使えません。
OKな変数名
$foo $_bar_ $foo_01
PHPで予め決められている文字でなければどんな文字でも使えます。
NGな変数名
$123abc $-foo- $ b a r
変数名をつけるときのルール
上記ルールを守っていれば基本的にはどんな名前をつけてもいいのですが、PHPerたちの中である一定のルールのようなものが存在します。
ローマ字読みはやめる
$namae $seibetsu $jyusyo
日本人だからこれでいいように思いますが、美しくないですしプログラミングの基本は英語です。英語を覚えましょう。
意味がわかる名前にする
$name $date $price
違う人がソースを見た際にも、ひと目見て意味がわかる名前をつけましょう。
小文字のスネークケース
$user_name $activation_key $what_a_day
少し長い名前になる際は小文字のスネークケースを使うことが多いです。
ヘビのように見えるためこう呼ばれます。
キャメルケース
$userName $activationKey $whatADay
PHPでは一般的に「変数」「関数」ではスネークケース、「プロパティ」や「メソッド」ではキャメルケースを用いる傾向があります。
ラクダのコブのように見えるためこう呼ばれます。
スーパーグローバル変数
PHPには定義済み変数「スーパーグローバル変数」というものが存在します。 これは、スクリプト全体を通してすべてのスコープで使用可能な変数のことです。
スーパーグローバル変数には次のようなものがあります。
- $GLOBALS(グローバル変数)
- $_SERVER(サーバー変数)
- $_GET(HTTP GET変数)
- $_POST(HTTP POST変数)
- $_COOKIE(COOKIE変数)
- $_ENV(環境変数)
- $_FILES(HTTP ファイルアップロード変数)
- $_REQUEST(リクエスト変数)
- $_SESSION(セッション変数)
スコープがどうのこうのと書いていますが、今は特に気にせず「こういったものがあるんだな〜」ぐらいに思っておいてください。
定数とは?
定数とは半永久的に値を記憶しておく箱です。一度定義した定数はそのスクリプトが実行されている間、変更することはできません。
const キーワードもしくはdefine関数で定義することができます。
const SITE_NAME = "Will Style Inc."; define("SITE_URL","https://www.willstyle.co.jp/");
使用する際は以下のようにして使用します。
echo SITE_NAME;
もちろん文字列とつなげたりもできます。
echo "ようこそ" . SITE_NAME . "へ"; // 結果:ようこそWill Style Inc.へ //「.(ドット)」は文字列と文字列を結合する「結合演算子」です
定数名をつけるときのルール
大文字のスネークケース
const SITE_NAME = "Will Style Inc."; define("SITE_URL","https://www.willstyle.co.jp/");
定数名は原則的に、全て大文字という慣習があります。
定義済みの定数
PHPにはコアで定義された定数があります。
これらの定数名は使用できません。
- PHP_VERSION (string)
- PHP_MAJOR_VERSION (integer)
- PHP_MINOR_VERSION (integer)
- PHP_RELEASE_VERSION (integer)
- PHP_VERSION_ID (integer)
- PHP_EXTRA_VERSION (string)
- PHP_ZTS (integer)
- PHP_DEBUG (integer)
- PHP_MAXPATHLEN (integer)
- PHP_OS (string)
- PHP_OS_FAMILY (string)
- PHP_SAPI (string)
- PHP_EOL (string)
- PHP_INT_MAX (integer)
- PHP_INT_MIN (integer)
- PHP_INT_SIZE (integer)
- PHP_FLOAT_DIG (integer)
- PHP_FLOAT_EPSILON (float)
- PHP_FLOAT_MIN (float)
- PHP_FLOAT_MAX (float)
- DEFAULT_INCLUDE_PATH (string)
- PEAR_INSTALL_DIR (string)
- PEAR_EXTENSION_DIR (string)
- PHP_EXTENSION_DIR (string)
- PHP_PREFIX (string)
- PHP_BINDIR (string)
- PHP_BINARY (string)
- PHP_MANDIR (string)
- PHP_LIBDIR (string)
- PHP_DATADIR (string)
- PHP_SYSCONFDIR (string)
- PHP_LOCALSTATEDIR (string)
- PHP_CONFIG_FILE_PATH (string)
- PHP_CONFIG_FILE_SCAN_DIR (string)
- PHP_SHLIB_SUFFIX (string)
- PHP_FD_SETSIZE (string)
- E_ERROR (integer)
- E_WARNING (integer)
- E_PARSE (integer)
- E_NOTICE (integer)
- E_CORE_ERROR (integer)
- E_CORE_WARNING (integer)
- E_COMPILE_ERROR (integer)
- E_COMPILE_WARNING (integer)
- E_USER_ERROR (integer)
- E_USER_WARNING (integer)
- E_USER_NOTICE (integer)
- E_DEPRECATED (integer)
- E_USER_DEPRECATED (integer)
- E_ALL (integer)
- E_STRICT (integer)
- __COMPILER_HALT_OFFSET__ (integer)
- TRUE (boolean)
- FALSE (boolean)
- NULL (null)
予約語
そのほかにも予約語と呼ばれるPHPでは特別な意味があるキーワードが存在します。
以下のキーワードはいずれも定数、クラス名、 関数名として使用することはできません。
これらを変数名として使用することは一般的には可能ですが、 混乱を生じる可能性があるので使用しないようにしましょう。
PHPのキーワード
- __halt_compiler()
- abstract
- and
- array()
- as
- break
- callable (PHP 5.4 以降)
- case
- catch
- class
- clone
- const
- continue
- declare
- default
- die()
- do
- echo
- else
- elseif
- empty()
- enddeclare
- endfor
- endforeach
- endif
- endswitch
- endwhile
- eval()
- exit()
- extends
- final
- finally (PHP 5.5 以降)
- for
- foreach
- function
- global
- goto (PHP 5.3 以降)
- if
- implements
- include
- include_once
- instanceof
- insteadof (PHP 5.4 以降)
- interface
- isset()
- list()
- namespace (PHP 5.3 以降)
- new
- or
- private
- protected
- public
- require
- require_once
- return
- static
- switch
- throw
- trait (PHP 5.4 以降)
- try
- unset()
- use
- var
- while
- xor
- yield (PHP 5.5 以降)
PHP のマジック定数
- __CLASS__
- __DIR__ (PHP 5.3 以降)
- __FILE__
- __FUNCTION__
- __LINE__
- __METHOD__
- __NAMESPACE__ (PHP 5.3 以降)
- __TRAIT__ (PHP 5.4 以降)
変数と定数の使い分け
PHPを使って何かアプリケーションを構築する際に、サイトの名前やサーバー内のパス、データベースの設定など一度決めてしまったら変わらない値を定数とし、その他の場面では基本的には変数を使いましょう。