static(静的)概要
PHP Manualより
クラスプロパティもしくはメソッドを static として宣言することで、 クラスのインスタンス化の必要なしにアクセスすることができます。 static なプロパティは、インスタンス化されたクラスオブジェクトから アクセスすることはできません
つまりクラス外から staticメソッド(静的メソッド)にアクセスする場合、
Foo::staticではこのメソッドにアクセスできるが、foo->static()の形ではアクセスできない。
staticメソッド(静的メソッド)についての備忘
- 静的(静的メソッド、静的プロパティ)というのは、インスタンス化しないで使うということ
- なのでインスタンスに影響を受けない(保守しやすい)
- 基本宣言されたクラス内で使用するケースが多い(self::xxxの形)
- 平たく言うと、インスタンス化が必要な時は、staticはつけない、インスタンス化が不要な時はstaticをつける
- アクセスする際は、
::
を使用する。 -
::
はスコープ定義演算子と言う - 無闇にインスタンスを実装して保守範囲を広げないために静的を利用する
staticメソッド(静的メソッド)にアクセスする例
sample.php
<?php
class Foo {
public static function aStaticMethod() {
echo "Hello Static!!!";
}
}
Foo::aStaticMethod();
//or
$classname = 'Foo';
$classname::aStaticMethod();
//出力結果
"Hello Static!!!";
//staticなメソッドには->ではアクセスできない
$foo = new Foo();
$foo->aStaticMethod;
//出力結果
PHP Notice: Undefined property:xxx
?>
参考
PHP: 静的メソッドは何のためにあるか?
self::と$this->の使い分け
PHP - What is OOP?