>  기사  >  백엔드 개발  >  PHP에서 이중 콜론 적용

PHP에서 이중 콜론 적용

巴扎黑
巴扎黑원래의
2016-11-24 11:02:041347검색

"::" 연산자는 PHP 클래스 코드에서 자주 볼 수 있습니다. 이는 범위 제한 연산자로, 클래스 내 다양한 ​​범위의 수준을 설정하는 데 사용됩니다. 왼쪽은 범위이고 오른쪽은 액세스 범위의 멤버입니다.

php에는 self와 parent라는 두 가지 범위가 정의되어 있습니다(정적 범위는 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::을 사용합니다. 이 한정자는 코드가 실행되기 직전에 상속 계층의 마지막 클래스 멤버를 계산합니다.

"범위 확인 연산자"라고도 알려진 "이중 콜론 연산자"는 클래스의 정적, 상수 및 재정의된 속성과 메서드에 액세스할 수 있습니다.
클래스 정의 외부에서 사용하는 경우 클래스 이름을 사용하여 호출하세요. 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();
?>

프로그램 실행 결과:

과일색 빨간색

프로그램 목록: 상위 메소드 호출


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 코드

<?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"!  
  
?>


프로그램 실행 결과:
show 색상


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.