PHPの範囲パーサー

无忌哥哥
リリース: 2023-04-01 21:06:02
オリジナル
1541 人が閲覧しました

* スコープ パーサー::

* 1. 目的

* 1. 静的メンバー (クラス外) の呼び出し

# * 2. クラス定数の呼び出し

* 3. サブクラスの対象となるクラス メンバー (プロパティ/メソッド) の呼び出し

* 2. シナリオ

* 1. クラスの外部: クラス名を介したクラスへのアクセスのみが可能です。 allowed Member

* 2. クラス内: 以下のみが許可されます: self、parent、static

* 3. 特別: クラス名変数は、クラス名の参照に使用できます。 (php5.3)

class Demo1 
{
    const HOME = '合肥';
    public static function test1()
    {
        return __METHOD__;
    }
    public static function test2()
    {
        //延迟静态绑定:后面会说到
        //static::根据上下文来决定使用哪个类来调用
        return static::test1();
    }
}
class Demo2 extends Demo1
{
    public static $name = '朱老师';
    public static function test1()
    {
        //调用本类静态成员: self::
        $res = self::$name.&#39;<br>&#39;;
        //调用父类静态成员属性: parent::
        $res .= parent::HOME.&#39;<br>&#39;;
        //调用父类静态成员方法
        $res .= parent::test1().&#39;<br>&#39;;
        $res .= __METHOD__;
        return $res;
    }
    
}
ログイン後にコピー

//1. クラスの外部からクラスの静的メンバーを呼び出します

echo Demo1::HOME,&#39;<br>&#39;;
echo Demo1::test1();
echo &#39;<hr>&#39;;
echo Demo2::test1();
echo &#39;<hr>&#39;;
ログイン後にコピー

//Demo1 が test2() を呼び出すことと Demo2 が test2 を呼び出すことの違いに注意してください。 ()

//Demo1::test() Demo1

echo Demo1::test2();
echo &#39;<hr>&#39;;
ログイン後にコピー

//Demo2::test2() の test1() の実行結果を返します。 Demo2

echo Demo2::test2();
echo &#39;<hr>&#39;;
ログイン後にコピー

//php5.3、クラス変数を使用して

$class = &#39;Demo2&#39;;
echo $class::test2();
ログイン後にコピー
を呼び出すことができます

以上がPHPの範囲パーサーの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート