範囲解決演算子 (::)

WBOY
リリース: 2016-07-29 08:57:07
オリジナル
1521 人が閲覧しました

スコープ解決演算子 (Paamayim Nekudotayim とも呼ばれます)、またはもっと単純にコロンのペアを使用して、静的メンバーやクラス定数にアクセスしたり、クラス内のプロパティやメソッドをオーバーライドしたりするために使用することもできます。

クラス定義の外でこれらの項目を参照する場合は、クラス名を使用します。

PHP 5.3.0 以降、値をキーワードにできない変数 (selfparentstatic など) を介してクラスを参照できるようになりました。

二重コロン演算子の名前として Paamayim Nekudotayim を選択したのは少し奇妙に思えます。ただし、これは Zend 開発チームが Zend Engine 0.5 (PHP 3 で使用) を作成したときに下した決定でした。実際、この単語はヘブライ語で二重コロンを意味します。

例 #1 :: 演算子の使用

<?php
class MyClass {
    const CONST_VALUE = &#39;A constant value&#39;;
}

$classname = &#39;MyClass&#39;;
echo $classname::CONST_VALUE; // 自 PHP 5.3.0 起

echo MyClass::CONST_VALUE;
?>
ログイン後にコピー
selfparent、および static内のプロパティまたはメソッドにアクセスするクラス定義。
例 #2 クラス定義内で使用する::

<?php
class OtherClass extends MyClass
{
    public static $my_static = &#39;static var&#39;;

    public static function doubleColon() {
        echo parent::CONST_VALUE . "\n";
        echo self::$my_static . "\n";
    }
}

$classname = &#39;OtherClass&#39;;
echo $classname::doubleColon(); // 自 PHP 5.3.0 起

OtherClass::doubleColon();
?>
ログイン後にコピー

例 #3 親クラスのメソッドを呼び出す

<?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 チュートリアルに興味のある友人に役立つことを願っています。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!