この記事では、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 アクセス メンバー (コンテキストの呼び出し)
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 サイトの他の関連記事を参照してください。