「::」演算子は、PHP クラス コードでよく見られます。これは、二重コロン「::」で表されるスコープ制限演算子で、クラス内のさまざまなスコープのレベルを設定するために使用されます。左側はスコープ、右側はアクセス スコープのメンバーです。
php には self とparent という 2 つのスコープが定義されています (静的スコープは php6 で提供されます)。
self: 現在のクラスのスコープを表します。これとは異なり、クラスの特定のインスタンスを表すものではなく、クラス外のコードで Self を使用することはできず、継承における自身の階層位置を識別することもできません。つまり、self が拡張クラスで使用される場合、親クラスのメソッドではなく、拡張クラスのオーバーロードされたメソッドが呼び出されます。
parent: 現在のクラスの親クラスのスコープを示し、それ以外はself属性と同じです。
PHP ダブルコロン::オペレーター:
<?php class forasp{ static $url="http://blog.csdn.net/abandonship"; static $webname = "PHP学习之双冒号的用法"; public function writeurl(){ echo self::$url;//调用自己的内容 } public function writewebname(){ echo "测试子类调用父类内容"; } } class cn extends forasp{ function father(){ parent::wirtewebname(); } } $a = new forasp();//实例化父类 $a->writeurl();//调用自身内容 $b = new cn(); $b->writewebname();//调用父类内容 ?>の例
静的メソッドを呼び出すときに :: を使用して、クラス内の静的メソッドまたはプロパティを呼び出すこともできます。これにより、クラスの各インスタンスがリソースの一部を占有するため、リソースの使用量を削減できます。リソース。
static:: スコープは php6 で提案されているため、self:: とparent:: は必要なくなりました。関数を実装する最終クラスを指定する場合は、 static:: を使用します。この修飾子は、コードが実行される直前に継承層の最後のクラスのメンバーを計算します。このプロセスは遅延バインディングと呼ばれます。
「スコープ解決演算子」とも呼ばれる「二重コロン演算子」は、クラス内の静的、const、およびオーバーライドされたプロパティとメソッドにアクセスできます。
クラス定義の外で使用する場合は、クラス名を使用して呼び出します。 PHP 5.3.0 では、クラス名の代わりに変数を使用できます。
プログラムリスト: クラス定義外に変数を使用してアクセス
<?php class Fruit { const CONST_VALUE = 'Fruit Color'; } $classname = 'Fruit'; echo $classname::CONST_VALUE; // As of PHP 5.3.0 echo Fruit::CONST_VALUE; ?>
プログラムリスト: クラス定義外でダブルコロン(::)を使用
<?php class Fruit { const CONST_VALUE = 'Fruit Color'; } class Apple extends Fruit { public static $color = 'Red'; public static function doubleColon() { echo parent::CONST_VALUE . "\n"; echo self::$color . "\n"; } } Apple::doubleColon(); ?>
プログラム実行結果:
果色赤
プログラムリスト: Call親メソッド
Php コード
<?php class Fruit { protected function showColor() { echo "Fruit::showColor()\n"; } } class Apple extends Fruit { // Override parent's definition public function showColor() { // But still call the parent function parent::showColor(); echo "Apple::showColor()\n"; } } $apple = new Apple(); $apple->showColor(); ?>
プログラム実行結果:
Fruit::showColor()
Apple::showColor()
プログラムリスト: スコープ修飾子を使用
Phpコード
rreeeプログラム実行結果:
bananaisyellow
プログラムリスト:ベースクラスの呼び出し方法
phpコード
<?php class Apple { public function showColor() { return $this->color; } } class Banana { public $color; public function __construct() { $this->color = "Banana is yellow"; } public function GetColor() { return Apple::showColor(); } } $banana = new Banana; echo $banana->GetColor(); ?>
プログラム実行結果: