オブジェクト指向プログラミングは、-> などの独自の 演算子 を使用します。このシンボルは、オブジェクト内の独自のメンバーにアクセスするために使用されます。もう 1 つは範囲解決演算子で、2 つのコロンが結合されたもの (::) です。この表記法は、(オブジェクト内ではなく) クラス内のメンバーにアクセスするために使用されます。使用法は次のとおりです:
ClassName::methodName(); ClassName::propertyName;
この構造体は 2 つの場所で使用できます:
1. クラスを使用するとき、親クラスとサブクラスが同じプロパティとメソッドを持っている場合、それを使用して回避できます。混乱 。
2. クラスの外にいる場合、オブジェクトを作成せずにクラスのメンバーにアクセスするには、この演算子を使用します。
クラス内で $this を使用して現在のオブジェクトのインスタンスを参照できるのと同じように、キーワード self は現在のクラスへの参照として使用されます。
class SomeClass { function construct() { self::do(); } protected function do(){ echo "done!"; } }
このコードでは、self::do() が現在のクラスの do() メソッドをトリガーします。
親クラスのメンバーを参照するには、キーワードparentとスコープ解決演算子を使用して参照できます:
class SomeOtherClass extends SomeClass { function construct() { parent::do(); } }
ほとんどの場合、オーバーライドされたメソッドにアクセスするにはスコープ解決演算子を使用します。これを使用して、静的メンバーと定数メンバーにアクセスすることもできます。
注: 静的プロパティと同様に、クラス定数には、クラス (またはそのサブクラス) のすべてのインスタンスからアクセスできます。ただし、その値は変更できません。クラス定数は、const キーワードの後に定数名 (ドル記号なし) を使用して作成されます。 $obj->PI や $obj::PI などのオブジェクトを通じて定数にアクセスすることはできませんが、ClassName::CONSTANT_NAME はどこでも使用できます。クラス内のメソッドで self::CONSTANT_NAME を使用することもできます。
サンプルプログラム:
<?php class Rectangle { protected static $_count = 0; protected $width; protected $height; function construct($width, $height) { $this->width = $width; $this->height = $height; self::$_count++; echo "已成功创建".self::$_count."个Rectangle对象<br>"; } function destruct() { echo "销毁一个Rectangle对象<br>"; } function getArea() { echo "Rectangle面积是:".($this->width * $this->height."<br>"); } function getConunt() { return self::$_count; } } class Square extends Rectangle { function construct($side) { $this->width = $side; $this->height = $side; parent::$_count++; echo "已成功创建".parent::$_count."个Rectangle(Square)对象<br>"; } } $rec = new Rectangle(10, 5); $rec->getArea(); $square = new Square(10); $square->getArea(); ?>
実行結果:
以上がPHP で範囲解決演算子を使用する詳細な例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。