ホームページ  >  記事  >  バックエンド開発  >  PHPでの二重コロンの使用

PHPでの二重コロンの使用

WBOY
WBOYオリジナル
2016-06-13 13:03:53739ブラウズ

php
での二重コロンの適用

「::」演算子は、PHP クラス コードでよく見られます。これは、二重コロン「::」で表され、クラス内のさまざまなスコープのレベルを設定するために使用されます。左側はスコープ、右側はアクセス スコープのメンバーです。

php には self とparent という 2 つのスコープが定義されています (静的スコープは php6 で提供されます)。

self: 現在のクラスのスコープを表します。これとは異なり、クラスの特定のインスタンスを表すことはできません。また、継承における自身の階層位置を識別することもできません。つまり、self が拡張クラスで使用される場合、親クラスのメソッドではなく、拡張クラスのオーバーロードされたメソッドが呼び出されます。


parent: 現在のクラスの親クラスのスコープを示し、それ以外はself属性と同じです。


PHP の二重コロン::演算子の例:

?

PHP コード PHPでの二重コロンの使用
  1. クラス?forasp{ ??
  2. ??static?$url="http://blog.csdn.net/abandonship" ??
  3. ;
  4. ??static?$webname?=?「二重コロンの使用法を学習する PHP」 ??
  5. ;
  6. ??パブリック?関数 ?writeurl(){ ??
  7. ????echo?self::$url;//独自のコンテンツを呼び出します ??
  8. ??} ??
  9. ??パブリック?関数 ?writewebname(){ ??
  10. ????echo?"親クラスのコンテンツを呼び出すサブクラスをテストします"; ?
  11. ??} ??
  12. } ??
  13. ??
  14. クラス?cn?拡張 ?forasp{ ??
  15. ??関数?father(){ ??
  16. ????parent::wirtewebname() ??
  17. ;
  18. ??} ??
  19. } ??
  20. ??
  21. $a?=?new?forasp(); // 親クラスをインスタンス化します ??
  22. $a->writeurl();//独自のコンテンツを呼び出します ??
  23. $b?=?new?cn(); ??
  24. $b->writewebname();//親クラスのコンテンツを呼び出します ??
  25. ?>??

?

静的メソッドを呼び出すときに :: を使用して、クラス内の静的メソッドまたはプロパティを呼び出すこともできます。これにより、クラスの各インスタンスがリソースの一部を占有するため、リソースの使用量を削減できます。


static:: スコープは php6 で提案されたため、self:: とparent:: は必要なくなりました。関数を実装する最終クラスを指定する場合は、 static:: を使用します。この修飾子は、コードが実行される直前に継承層の最後のクラスのメンバーを計算します。このプロセスは遅延バインディングと呼ばれます。

「スコープ修飾演算子」 (スコープ解決演算子) とも呼ばれる「二重コロン演算子」は、クラス内の静的、定数、およびオーバーライドされたプロパティとメソッドにアクセスできます。
クラス定義の外で使用する場合は、クラス名を使用して呼び出します。 PHP 5.3.0 では、クラス名の代わりに変数を使用できます。


プログラム リスト: 変数を使用してクラス定義外にアクセスします

PHP コード PHPでの二重コロンの使用
  1. クラス?フルーツ?{ ??
  2. ??const?CONST_VALUE?=?'フルーツ?カラー' ??
  3. ;
  4. } ??
  5. $classname?=?'フルーツ'; ??
  6. ;
  7. echo?$classname::CONST_VALUE;?//?As?of?PHP?5.3。 0 ??
  8. エコー?Fruit::CONST_VALUE ??
  9. ?>??

?

プログラム リスト: クラス定義の外側で二重コロン (::) を使用します

PHP コード PHPでの二重コロンの使用
  1. クラス?フルーツ?{ ??
  2. ??const?CONST_VALUE?=?'フルーツ?カラー' ??
  3. ;
  4. } ??
  5. クラス?Apple?拡張 ?フルーツ??
  6. { ??
  7. ??パブリック?静的 ?$color?=?'赤'; >
  8. ??パブリック?静的 ?関数?doubleColon()?{ ??
  9. ????echo?parent::CONST_VALUE?.?"n"; ??
  10. ????echo?self::$color?.? "n" ?? ;
  11. ??} ??
  12. } ??
  13. Apple::doubleColon() ??
  14. ?>??
?

プログラムの実行結果:

果実の色 赤

プログラムリスト: 親メソッドの呼び出し

?

PHP コード
PHPでの二重コロンの使用
  1. クラス?フルーツ ??
  2. { ??
  3. ????保護された?機能?showColor()?{ ??
  4. ?????????エコー?"Fruit::showColor()n"; ??
  5. ????} ??
  6. } ??
  7. ??
  8. クラス?Apple?拡張 ?フルーツ??
  9. { ??
  10. ??//?親の定義を上書きします ??
  11. ????public?関数?showColor() ??
  12. ????{ ??
  13. ?????????//?それでも?親関数を呼び出す ??
  14. ?????????parent::showColor(); ??
  15. ?????????echo?"Apple::showColor()n"; ??
  16. ????} ??
  17. } ??
  18. ??
  19. $apple?=?new?Apple(); ??
  20. $apple->showColor(); ??
  21. ?>??

?

程序运行结果:
Fruit::showColor()
Apple::showColor()

?

プログラムリスト:使用作用領域限定符

?

Php代码 PHPでの二重コロンの使用
  1. ????クラス?Apple ??
  2. ????{ ??
  3. ?????????public?関数?showColor() ??
  4. ??????????{ ??
  5. ????????????戻る?$this->色; ??
  6. ??????????} ??
  7. ????} ??
  8. ??クラス?バナナ ??
  9. ????{ ??
  10. ?????????public?$color; ??
  11. ?????????public?関数?__construct() ??
  12. ??????????{ ??
  13. ????????????$this->color?=?「バナナ?黄色"; ??
  14. ??????????} ??
  15. ?????????public?関数?GetColor() ??
  16. ??????????{ ??
  17. ????????????return?Apple::showColor(); ??
  18. ??????????} ??
  19. ????} ??
  20. ????$banana?=?新しい?バナナ; ??
  21. ????エコー?$banana->GetColor(); ??
  22. ?>??

?

程序运行结果:
バナナは黄色です

プログラムリスト:调用基类的方法

Php代码 PHPでの二重コロンの使用
  1. ??
  2. クラス?フルーツ ??
  3. { ??
  4. ????静的?関数?color() ??
  5. ????{ ??
  6. ?????????戻る?"色"; ??
  7. ????} ??
  8. ??
  9. ????静的?関数?showColor() ??
  10. ????{ ??
  11. ?????????エコー?「ショー?」?.? self::color(); ??
  12. ????} ??
  13. } ??
  14. ??
  15. クラス?Apple?拡張 ?フルーツ??
  16. { ??
  17. ????静的?関数?color() ??
  18. ????{ ??
  19. ?????????戻る?"赤"; ??
  20. ????} ??
  21. } ??
  22. ??
  23. Apple::showColor(); ??
  24. //?出力?は?「表示?カラー」です! ??
  25. ??
  26. ?>??

?

程序运行结果:
色を表示

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