LoginSignup
3

More than 3 years have passed since last update.

静的(スタティック)メンバについて解説!

Last updated at Posted at 2019-05-04

静的(スタティック)メンバとは

  • インスタンスを生成しなくても、クラス内に定義されているプロパティやメソッド(メンバ)にアクセスができること。

静的(スタティック)メンバの使い方

  • クラスのプロパティまたはメソッドにstaticという修飾子を付けます。
  • staticが付いているプロパティを静的プロパティと呼びます。
  • staticが付いているメソッドを静的メソッドと呼びます。

静的(スタティック)メンバの書き方

<?php

class クラス名 {

    アクセス修飾子 static $プロパティ名;

    アクセス修飾子 static function メソッド名(引数) {
        //ここに処理が入ります
    }

?>

静的(スタティック)メンバにアクセスする方法

  • 静的プロパティまたは静的メソッドにアクセスするにはスコープ定義演算子 「::」を使います。

スコープ定義演算子 「::」とは

  • 静的プロパティまたは静的メソッドにアクセスするために使う演算子です。

スコープ定義演算子 「::」の書き方

クラス名::アクセスしたいプロパティ
クラス名::アクセスしたいメソッド

オブジェクト演算子「->」とスコープ定義演算子 「::」の違いについて

  • どちらもプロパティやメソッドにアクセスするために使いますが、2つの演算子の違いについて紹介します。

オブジェクト演算子「->」のアクセス方法

  • インスタンスプロパティインスタントメソッドにアクセスできます。
  • インスタンスプロパティまたはインスタントメソッドとはstaticを宣言していないプロパティまたはメソッドです。

オブジェクト演算子「->」の書き方

$インスタンスを代入した変数->アクセスしたいインスタンスプロパティまたはインスタンスメソッド

コード例

<?php

class Products
{

    private $name = "テーブル";

    public function getName(){
        return $this->name;
    }
}

$product = new Products();

echo $product->getName();

?>
出力結果
テーブル

スコープ定義演算子 「::」のアクセス方法

  • 静的プロパティまたは静的メソッドにアクセスします。
  • staticを宣言しているプロパティまたはメソッドにアクセスできます。

コード例

<?php

class Products
{

    public static $name = "テーブル";

    public static function price($price){
        return $price;
    }
}

echo Products::$name . "の金額は" . Products::price(3000) . "円です";

コード例
テーブルの金額は3000円です

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3