ホームページ  >  記事  >  バックエンド開発  >  PHP での非転送通話と転送通話のコード例

PHP での非転送通話と転送通話のコード例

不言
不言オリジナル
2018-08-10 10:37:262491ブラウズ

この記事では、PHP での非転送通話と転送通話に関するコード例を紹介します。一定の参考値があります。困っている友人は参考にしてください。お役に立てれば幸いです。

クラスのメンバーへの静的アクセス:

1. 非転送呼び出し

1) クラス名をクリア (A::funcA())

2. 前方呼び出し

    1)self::
    2)parent::
    3)static::
    4)forward_static_call()
    5)get_called_class()

注:
「遅延バインディング」とは、static:: が現在のメソッドが定義されているクラスに解析されなくなりますが、実際には解析されることを意味します。実行時間は計算されます。静的メソッドの呼び出し (ただし、それに限定されない) に使用できるため、「静的バインディング」とも呼ばれます。

<?php
class A {
    public static function foo() {
        static::who();
    }

    public static function who() {
        echo __CLASS__."\n";
    }
}

class B extends A {
    public static function test() {
        A::foo();
        parent::foo();
        self::foo();
    }

    public static function who() {
        echo __CLASS__."\n";
    }
}
class C extends B {
    public static function who() {
        echo __CLASS__."\n";
    }
}

C::test();
?>
の実行結果:
A
C
C
注:
非静的環境では、呼び出されるクラスはオブジェクト インスタンスが属するクラスです。 $this-> は同じスコープ内の private メソッドを呼び出そうとするため、static:: は異なる結果を返す可能性があります。もう 1 つの違いは、static:: は静的プロパティでのみ使用できることです。

継承されたプロパティはあなたのものです

継承チェーンでは、現在のクラスへのアクセス、予約語の特性に従ってアクセスした後、継承チェーンに従ってアクセスすることが優先されます。

$this アクセス メンバー (コンテキストの呼び出し)

self:: アクセス メンバー (コンテキストの解析)

<?php
 
class A{
    protected $value = "A value";
 
    public function printValue(){
        echo $this->value;
    }
}
class B extends A{
   protected $value = "B value";
}
$app = new B();
$app->printValue();
运行结果:B value
<?php
 
class A{
    //只有将属性定义为静态的才能使用self::进行调用
    static protected $value = "A static value ";
    public function printValue(){
        echo self::$value;
    }
}
 
class B extends A{
    static protected $value = "B static value";
}
 
$app = new B();
$app->printValue();
运行结果:A static value
<?php
class A{
    static protected $value = "A static value ";
}
 
class B extends A{
    public function printValue(){
        echo self::$value;
    }
}
$app = new B();
$app->printValue();
运行结果:A static value

関連する推奨事項:

PHP が必要とするものページジャンプ機能を実装するにはどうすればよいですか? (関数タグの例)

PHP でドロップダウン メニューと複数レベルの列を実装するにはどうすればよいですか? (実際のテストコード)

phpとhtmlを組み合わせて画像ファイルをサーバーにアップロードするコード

以上がPHP での非転送通話と転送通話のコード例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。