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

不言
リリース: 2023-04-03 17:54:01
オリジナル
2513 人が閲覧しました

この記事では、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 サイトの他の関連記事を参照してください。

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