自己紹介
はじめまして、日本システム開発株式会社の藤井といいます。
業務でPHPを触ることが多く、勉強してみようと思ってドキュメントを読み、役立ちそうな内容を記事にまとめています。
記事の内容は大体php.netに書いてありますが、ドキュメントを読むのが面倒くさいと思った方は、
ぜひこの記事を役立ててください。
変数について
概要
変数とは値を格納する箱のことです。ドル記号の後ろに変数名が続く形式で記述し、値を代入して使用します。
基本的に、いつでも値を取り出したり、変更したりすることができます。
変数名のルールは以下の2つです。
- 大文字小文字を区別します。
- 文字またはアンダースコアから始まり、任意の数の文字、数値、アンダースコアが続きます。
変数の利用
$variable = 'variable';
変数のスコープ
スコープとは範囲のことです。スコープは2種類あり、グローバルスコープとローカルスコープです。
以下のコードを例を用いて説明します。
<?php
// グローバルスコープ
$a = 'a'; //グローバル変数
function abc()
{
// ローカルスコープ
$a = 'b'; // ローカル変数
}
abc();
echo $a; // a
?>
ローカル変数は、abc()が実行されている間のみ存在します。
そのため、ローカルスコープからグローバル変数へはアクセスできますが、
グルーバルスコープからローカル変数へはアクセスできません。
ローカルスコープからグローバル変数へアクセスするには、globalキーワードを用います。
globalキーワードを用いることで、対象の変数がローカル変数なのか、グローバル変数なのかを区別することができます。
<?php
// グローバルスコープ
$a = 'a';
function abc()
{
// ローカルスコープ
global $a; // グローバル変数a
$a = 'b';
}
abc();
echo $a; // b
?>
可変変数
一言で説明すると、変数名、プロパティ名を可変にできる機能です。ドル記号を複数続けて記述します。
以下、コード例を用いて説明します。
$a = "hello";
$$a = "world";
上のコードで、aとhelloの2つの変数が定義されます。
$a
は"hello"
なので、$$a
は$hello
と同じ意味になります。
プロパティの場合
$foo = new StdClass();
$foo->bar = "It's bar";
$foo->buzz = "It's buzz";
$b = "bar";
echo $foo->$b; // It's bar
定数について
概要
値に名前つける機能です。定数の値はスクリプト実行中に変更できません。
定数は大文字小文字を区別しますが、慣習的に大文字のみで表記します。
定数の定義には、define関数かconstキーワードを使用します。
define("DEFINE_CONSTANT", "constant");
const CONSTANT = "constant";
定数は、スコープに関係なく、あらゆる場所からアクセス可能です。
また、スカラー値と配列のみ格納できます。
定義済みの定数とマジック定数
PHPには、スクリプト内で利用可能な多くの定義済み定数が存在します。
よく利用される例として、PHP_EOLがあります。
マジック定数とは、使われる場所によって値が変化する定数です。全部で9つあります。
利用例として、ClassName::classがあります。