スコープ解決演算子 (Paamayim Nekudotayim とも呼ばれます)、またはもっと単純にコロンのペアを使用して、静的メンバーやクラス定数にアクセスしたり、クラス内のプロパティやメソッドをオーバーライドしたりするために使用することもできます。
クラス定義の外でこれらの項目を参照する場合は、クラス名を使用します。
PHP 5.3.0 以降、値をキーワードにできない変数 (self、parent、static など) を介してクラスを参照できるようになりました。
二重コロン演算子の名前として Paamayim Nekudotayim を選択したのは少し奇妙に思えます。ただし、これは Zend 開発チームが Zend Engine 0.5 (PHP 3 で使用) を作成したときに下した決定でした。実際、この単語はヘブライ語で二重コロンを意味します。
例 #1 :: 演算子の使用
<?php class MyClass { const CONST_VALUE = 'A constant value'; } $classname = 'MyClass'; echo $classname::CONST_VALUE; // 自 PHP 5.3.0 起 echo MyClass::CONST_VALUE; ?>self、parent、および static内のプロパティまたはメソッドにアクセスするクラス定義。
<?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(); ?>
<?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(); ?>
上記は、範囲解析演算子 (::) を、関連する内容も含めて紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。