PHP アドバンス

PHP OOP - スタティックプロパティ

1. PHP - スタティックプロパティ(Static Properties)とは?

static キーワードは、スタティックプロパティ(静的プロパティ)を作成するために使用されます。
スタティックプロパティの最大の特徴は、クラスのインスタンスを生成(new)することなく、直接アクセスできる点にあります。

2. スタティックプロパティの宣言

クラス内でスタティックプロパティを宣言するには、プロパティ名の前に static キーワードを記述します。

class ClassName {
  public static $statProp = "Volardev";
}

3. スタティックプロパティへのアクセス

スタティックプロパティにアクセスするには、クラス名に続けてダブルコロン(::とプロパティ名を指定します。

ClassName::$statProp;

以下の例では、$value というスタティックプロパティを宣言しています。その後、クラスをインスタンス化することなく、クラス名、ダブルコロン(::)、およびプロパティ名を使用して、その値を直接出力しています。

3.1 例:基本的なスタティックプロパティの利用

<?php
class pi {
  // スタティックプロパティの定義
  public static $value = 3.14159;
}

// インスタンス化せずにスタティックプロパティを直接取得
echo pi::$value;
?>

4. スタティックプロパティに関する詳細事項

クラス内には、スタティックプロパティと非スタティックプロパティ(インスタンスプロパティ)の両方を持たせることができます。

同一クラス内のメソッドからスタティックプロパティにアクセスする場合は、self キーワードとダブルコロン(::)を使用します。

4.1 例:同一クラス内でのアクセス

<?php
class pi {
  public static $value = 3.14159;
  
  public function staticValue() {
    // selfキーワードを使用してスタティックプロパティにアクセス
    return self::$value;
  }
}

$pi = new pi();
echo $pi->staticValue();
?>

5. 子クラスからのスタティックプロパティの呼び出し

子クラスから親クラスのスタティックプロパティを呼び出すには、子クラス内で parent キーワードを使用します。

5.1 例:継承関係におけるスタティックプロパティの利用

<?php
class pi {
  public static $value = 3.14159;
}

class x extends pi {
  public function xStatic() {
    // parentキーワードを使用して親クラスのプロパティにアクセス
    return parent::$value;
  }
}

// 子クラスの名前を介してスタティックプロパティに直接アクセス
echo x::$value;

// または、xStatic() メソッド経由でスタティックプロパティの値を取得
$x = new x();
echo $x->xStatic();
?>