PHPでのダブルコロンの適用

巴扎黑
リリース: 2016-11-24 11:02:04
オリジナル
1386 人が閲覧しました

「::」演算子は、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 = &#39;Fruit Color&#39;;
}
$classname = &#39;Fruit&#39;;
echo $classname::CONST_VALUE; // As of PHP 5.3.0
echo Fruit::CONST_VALUE;
?>
ログイン後にコピー

プログラムリスト: クラス定義外でダブルコロン(::)を使用

<?php
class Fruit {
  const CONST_VALUE = &#39;Fruit Color&#39;;
}
class Apple extends Fruit
{
  public static $color = &#39;Red&#39;;
  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&#39;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();  
?>
ログイン後にコピー


プログラム実行結果:

show色


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