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::を使うべし。