PHP - クラス
公開日:2020-12-22 更新日:2020-12-22
[PHP]
1. 概要
クラスは、変数と関数をグループ化した型になります。
数値型は数値、文字列型は文字列、と言う値がありますが、
クラス(型)の場合は、クラスを実体化したインスタンス(オブジェクト)が値に該当します。
クラスからオブジェクトを生成するには、new と言うキーワードを使います。
生成されたオブジェクトは、数値や文字列などと同様に、変数に代入したりして、値として使うことができます。
オブジェクトは、クラスからいくつでも生成することができます。
また、クラス内の変数のことをプロパティ、関数のことをメソッドと呼びます。
数値型は数値、文字列型は文字列、と言う値がありますが、
クラス(型)の場合は、クラスを実体化したインスタンス(オブジェクト)が値に該当します。
クラスからオブジェクトを生成するには、new と言うキーワードを使います。
生成されたオブジェクトは、数値や文字列などと同様に、変数に代入したりして、値として使うことができます。
オブジェクトは、クラスからいくつでも生成することができます。
また、クラス内の変数のことをプロパティ、関数のことをメソッドと呼びます。
2. 基本
プロパティとメソッドを1つずつ持っている例です。
2.1 クラスの定義
// クラスの定義
class Test {
// 定数
public const MAX_VALUE = 999999;
// プロパティ
public $value = 0;
// メソッド
public function getValue() {
return $this->value;
}
}
// オブジェクトの生成
$obj1 = new Test();
$obj2 = new Test();
// プロパティの設定・取得
$obj1->value = 100000;
var_dump( $obj1->value ); // 100000
var_dump( $obj1->getValue() ); // 100000
// $obj2 の value は、$obj1 と異なる
var_dump( $obj2->value ); // 0
// 定数
var_dump( Test::MAX_VALUE ); // 999999
実行結果int(100000)
int(100000)
int(0)
int(999999)
2.1 クラスの定義
クラスを定義するには、class の後ろにクラス名を付けて、
その後ろの { } 内で、プロパティやメソッドを定義します。
プロパティやメソッドは、複数定義できます。
書く順番に決まりはありませんが、プロパティを定義してから、メソッドを定義することが多いです。
(言語によっては、書く場所に意味がある場合もあるので要注意)
class クラス名 {
// プロパティ
// メソッド
}
2.2 プロパティの定義
クラスの { } 内に、public、private、protected、var と言うアクセス修飾子を付けた変数がプロパティになります。
プロパティは、宣言時に初期化しなくても問題ありません。
public 変数名 = 初期値;
private 変数名;
protected 変数名;
var 変数名;
public と var は、クラスの外部にプロパティを公開して、参照できるようにします。
(var は以前のバージョンのもので、public なのか private なのかがわからないため、使わない方が良いと思います)
private は、プロパティを非公開にします。
但し、直接参照できないだけで、クラス内のメソッドで参照して、その値を外部に返すことはできます。
protected は、外部には非公開にしますが、クラスの継承先には公開します。
このアクセス権は、メソッドにも付けることができます。
(参考)
ちなみに、クラス直下に定義している変数のことを、
クラス変数、インスタンス変数、メンバ変数とも呼びます。
クラス変数 = static な変数(クラスで1つだけ保持)
インスタンス変数 = static でない変数(オブジェクト毎に保持)
メンバ変数 = クラス変数とインスタンス変数
2.3 メソッドの定義
基本的には関数と同じです。
function の前にアクセス修飾子を付けることができます。付けない場合は、public になります。
(他の言語では、省略した場合は private になることが多いので要注意)
public function メソッド名() {
return 戻り値;
}
2.4 プロパティの参照とメソッドの実行
プロパティを参照したり、メソッドを実行するには、
オブジェクトの入った変数の後ろに「->」を付けて、
その後ろにプロパティ名やメソッド名を付けます。
変数->プロパティ;
変数->メソッド()
外部から参照する場合は、生成したオブジェクトを代入した変数を使います。
$obj = new Test();
$obj->value = 100000;
$obj->getValue();
クラスの内部から参照する場合は、
クラスの自分自身のオブジェクトを表す「$this」を使います。
$this->value = 100000;
$this->getValue();
2.5 オブジェクトの生成
クラスからオブジェクトを生成するには、次のようにします。
$obj = new クラス名;
$obj = new クラス名();
$obj = new クラス名(引数1, 引数2, ... 引数n);
生成時に、引数を渡すことができますが、引数がない場合は、() を省略できます。
2.6 定数
定数はクラス内で定義することができます。
これにより、クラスに関連する定数をまとめることができます。
定数を使用する時は、「クラス名::」+ 定数名、とします。
class クラス名 {
public const MAX_VALUE = 999999;
}
$value = クラス名::MAX_VALUE;
その後ろの { } 内で、プロパティやメソッドを定義します。
プロパティやメソッドは、複数定義できます。
書く順番に決まりはありませんが、プロパティを定義してから、メソッドを定義することが多いです。
(言語によっては、書く場所に意味がある場合もあるので要注意)
class クラス名 {
// プロパティ
// メソッド
}
クラスの { } 内に、public、private、protected、var と言うアクセス修飾子を付けた変数がプロパティになります。
プロパティは、宣言時に初期化しなくても問題ありません。
public と var は、クラスの外部にプロパティを公開して、参照できるようにします。
(var は以前のバージョンのもので、public なのか private なのかがわからないため、使わない方が良いと思います)
private は、プロパティを非公開にします。
但し、直接参照できないだけで、クラス内のメソッドで参照して、その値を外部に返すことはできます。
protected は、外部には非公開にしますが、クラスの継承先には公開します。
このアクセス権は、メソッドにも付けることができます。
(参考)
ちなみに、クラス直下に定義している変数のことを、
クラス変数、インスタンス変数、メンバ変数とも呼びます。
プロパティは、宣言時に初期化しなくても問題ありません。
public 変数名 = 初期値;
private 変数名;
protected 変数名;
var 変数名;
public と var は、クラスの外部にプロパティを公開して、参照できるようにします。
(var は以前のバージョンのもので、public なのか private なのかがわからないため、使わない方が良いと思います)
private は、プロパティを非公開にします。
但し、直接参照できないだけで、クラス内のメソッドで参照して、その値を外部に返すことはできます。
protected は、外部には非公開にしますが、クラスの継承先には公開します。
このアクセス権は、メソッドにも付けることができます。
(参考)
ちなみに、クラス直下に定義している変数のことを、
クラス変数、インスタンス変数、メンバ変数とも呼びます。
クラス変数 = static な変数(クラスで1つだけ保持)
インスタンス変数 = static でない変数(オブジェクト毎に保持)
メンバ変数 = クラス変数とインスタンス変数
2.3 メソッドの定義
基本的には関数と同じです。
function の前にアクセス修飾子を付けることができます。付けない場合は、public になります。
(他の言語では、省略した場合は private になることが多いので要注意)
public function メソッド名() {
return 戻り値;
}
2.4 プロパティの参照とメソッドの実行
プロパティを参照したり、メソッドを実行するには、
オブジェクトの入った変数の後ろに「->」を付けて、
その後ろにプロパティ名やメソッド名を付けます。
変数->プロパティ;
変数->メソッド()
外部から参照する場合は、生成したオブジェクトを代入した変数を使います。
$obj = new Test();
$obj->value = 100000;
$obj->getValue();
クラスの内部から参照する場合は、
クラスの自分自身のオブジェクトを表す「$this」を使います。
$this->value = 100000;
$this->getValue();
2.5 オブジェクトの生成
クラスからオブジェクトを生成するには、次のようにします。
$obj = new クラス名;
$obj = new クラス名();
$obj = new クラス名(引数1, 引数2, ... 引数n);
生成時に、引数を渡すことができますが、引数がない場合は、() を省略できます。
2.6 定数
定数はクラス内で定義することができます。
これにより、クラスに関連する定数をまとめることができます。
定数を使用する時は、「クラス名::」+ 定数名、とします。
class クラス名 {
public const MAX_VALUE = 999999;
}
$value = クラス名::MAX_VALUE;
function の前にアクセス修飾子を付けることができます。付けない場合は、public になります。
(他の言語では、省略した場合は private になることが多いので要注意)
public function メソッド名() {
return 戻り値;
}
プロパティを参照したり、メソッドを実行するには、
オブジェクトの入った変数の後ろに「->」を付けて、
その後ろにプロパティ名やメソッド名を付けます。
外部から参照する場合は、生成したオブジェクトを代入した変数を使います。
クラスの内部から参照する場合は、
クラスの自分自身のオブジェクトを表す「$this」を使います。
オブジェクトの入った変数の後ろに「->」を付けて、
その後ろにプロパティ名やメソッド名を付けます。
変数->プロパティ;
変数->メソッド()
外部から参照する場合は、生成したオブジェクトを代入した変数を使います。
$obj = new Test();
$obj->value = 100000;
$obj->getValue();
クラスの内部から参照する場合は、
クラスの自分自身のオブジェクトを表す「$this」を使います。
$this->value = 100000;
$this->getValue();
2.5 オブジェクトの生成
クラスからオブジェクトを生成するには、次のようにします。
$obj = new クラス名;
$obj = new クラス名();
$obj = new クラス名(引数1, 引数2, ... 引数n);
生成時に、引数を渡すことができますが、引数がない場合は、() を省略できます。
2.6 定数
定数はクラス内で定義することができます。
これにより、クラスに関連する定数をまとめることができます。
定数を使用する時は、「クラス名::」+ 定数名、とします。
class クラス名 {
public const MAX_VALUE = 999999;
}
$value = クラス名::MAX_VALUE;
$obj = new クラス名;
$obj = new クラス名();
$obj = new クラス名(引数1, 引数2, ... 引数n);
生成時に、引数を渡すことができますが、引数がない場合は、() を省略できます。
定数はクラス内で定義することができます。
これにより、クラスに関連する定数をまとめることができます。
定数を使用する時は、「クラス名::」+ 定数名、とします。
これにより、クラスに関連する定数をまとめることができます。
定数を使用する時は、「クラス名::」+ 定数名、とします。
class クラス名 {
public const MAX_VALUE = 999999;
}
$value = クラス名::MAX_VALUE;