ホームページ  >  記事  >  バックエンド開発  >  PHPでのダブルコロンの適用

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

巴扎黑
巴扎黑オリジナル
2016-12-01 10:08:081253ブラウズ

「::」演算子は、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();  
?>


プログラムの実行結果:

フルーツカラーレッド

プログラムリスト: 親メソッドの hPhp コードを呼び出します

<?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 コード

<?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();  
?>

プログラムの実行結果:

バナナは黄色

プログラムリスト: 基本クラスの呼び出し方法

Phpコード

<?php  
  
class Fruit  
{  
    static function color()  
    {  
        return "color";  
    }  
  
    static function showColor()  
    {  
        echo "show " . self::color();  
    }  
}  
  
class Apple extends Fruit  
{  
    static function color()  
    {  
        return "red";  
    }  
}  
  
Apple::showColor();  
// output is "show color"!  
  
?>



プログラム実行結果:
色を表示

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