静的プロパティは、プロパティを定義するときに、static
キーワードを前に付けて定義する。
静的プロパティには、クラス名::$プロパティ名
で、アクセスする。
インスタンスや、矢印演算子->
を使ったアクセスはできない。
同じクラスの静的プロパティへアクセスするには、self
キーワードを使うこともできる。
子クラスから、親クラスの静的プロパティへアクセスするには、parent
キーワードを使うこともできる。
書式
class クラス名 // クラスを定義
{
public static $プロパティ名 = 値; // 静的プロパティを定義
function メソッド名() { // メソッドを定義
クラス名::$プロパティ名; // 「クラス名」の「プロパティ名」の静的プロパティへアクセス
}
}
クラス名::$プロパティ名; // 「クラス名」の「プロパティ名」の静的プロパティへアクセス
{
public static $プロパティ名 = 値; // 静的プロパティを定義
function メソッド名() { // メソッドを定義
クラス名::$プロパティ名; // 「クラス名」の「プロパティ名」の静的プロパティへアクセス
}
}
クラス名::$プロパティ名; // 「クラス名」の「プロパティ名」の静的プロパティへアクセス
ポイント
静的プロパティへのアクセスは、クラス名、スコープ定義演算子::
のあとに、$
を入れ、プロパティ名を続ける。
$
を忘れがちなので、その点に注意。
クラス名::$プロパティ名;
サンプル
<?php
class taxClass5
{
public static $varTax = 0.05;
function func_tax( $var ) {
return $var * ( 1 + taxClass5::$varTax );
}
function func_echo( $var ) {
echo $this->func_tax( $var ) . '円<br />';
}
}
class taxClass7 extends taxClass5
{
public static $varTax = 0.07;
function func_tax( $var ) {
return $var * ( 1 + taxClass7::$varTax );
}
}
$var_class = new taxClass5();
echo '税率' . taxClass5::$varTax * 100 . '%の場合: ';
$var_class->func_echo( 100 );
$var_class = new taxClass7();
echo '税率' . taxClass7::$varTax * 100 . '%の場合: ';
$var_class->func_echo( 100 );
?>
class taxClass5
{
public static $varTax = 0.05;
function func_tax( $var ) {
return $var * ( 1 + taxClass5::$varTax );
}
function func_echo( $var ) {
echo $this->func_tax( $var ) . '円<br />';
}
}
class taxClass7 extends taxClass5
{
public static $varTax = 0.07;
function func_tax( $var ) {
return $var * ( 1 + taxClass7::$varTax );
}
}
$var_class = new taxClass5();
echo '税率' . taxClass5::$varTax * 100 . '%の場合: ';
$var_class->func_echo( 100 );
$var_class = new taxClass7();
echo '税率' . taxClass7::$varTax * 100 . '%の場合: ';
$var_class->func_echo( 100 );
?>
↓↓↓出力結果↓↓↓
税率5%の場合: 105円
税率7%の場合: 107円
税率7%の場合: 107円