PHPの範囲パーサー

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

* スコープ パーサー::

* 1. 目的

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

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

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

* 2. シナリオ

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

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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

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. クラスの外部からクラスの静的メンバーを呼び出します

1

2

3

4

5

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

1

2

echo Demo1::test2();

echo &#39;<hr>&#39;;

ログイン後にコピー

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

1

2

echo Demo2::test2();

echo &#39;<hr>&#39;;

ログイン後にコピー

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

1

2

$class = &#39;Demo2&#39;;

echo $class::test2();

ログイン後にコピー
を呼び出すことができます

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

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