by shigemk2

当面は技術的なことしか書かない

スコープ定義演算子::

PHP: スコープ定義演算子 (::) - Manual
static、定数 およびオーバーライドされたクラスのプロパティやメソッドに
アクセスすることができる。

これらの要素をクラス定義の外から参照する際には、 クラスの名前を使用すること。

<?php
class MyClass {
    const CONST_VALUE = 'A constant value';
}

$classname = 'MyClass';
echo $classname::CONST_VALUE; // MyClassクラスの定数を参照している。PHP 5.3.0 以降で対応

echo MyClass::CONST_VALUE;
?>

内部から定数を呼び出すことも出来る。

<?php
class OtherClass extends MyClass
{
    public static $my_static = 'static var';

    public static function doubleColon() {
        echo parent::CONST_VALUE . "\n"; // 親の定数を呼び出す
        echo self::$my_static . "\n"; // 内部の定数を呼び出す
    }
}

$classname = 'OtherClass';
echo $classname::doubleColon(); // PHP 5.3.0 以降で対応

OtherClass::doubleColon();
?>

内部の定数やメソッドを呼び出したいときはself::を使うべし。

親のメソッドを呼び出す

<?php
class MyClass
{
    protected function myFunc() {
        echo "MyClass::myFunc()\n";
    }
}

class OtherClass extends MyClass
{
    // 親の定義をオーバーライド
    public function myFunc()
    {
        // それでも親の関数をコール
        parent::myFunc();
        echo "OtherClass::myFunc()\n";
    }
}

$class = new OtherClass();
$class->myFunc();
?>

親のメソッドや定数を呼び出したいときはparent::を使うべし。