>백엔드 개발 >PHP 튜토리얼 >PHP 범위 결정 연산자(::)

PHP 범위 결정 연산자(::)

伊谢尔伦
伊谢尔伦원래의
2016-11-23 14:13:351174검색

범위 확인 연산자(Paamayim Nekudotayim이라고도 함) 또는 간단히 콜론 쌍을 사용하여 정적 멤버, 클래스 상수에 액세스할 수 있으며 클래스의 속성 및 메서드를 재정의하는 데에도 사용할 수 있습니다.

클래스 정의 외부에서 이러한 항목을 참조할 때는 클래스 이름을 사용하세요.

PHP 5.3.0부터 클래스는 변수를 통해 참조할 수 있으며, 변수의 값은 키워드(self, parent, static 등)가 될 수 없습니다.

이중 콜론 연산자의 이름을 Paamayim Nekudotayim으로 선택한 것은 조금 이상한 것 같습니다. 그러나 이는 Zend 엔진 0.5(PHP 3에서 사용됨)를 작성할 때 Zend 개발팀이 내린 결정이었습니다. 사실 히브리어로 이 단어는 이중 콜론을 의미합니다.

예제 #1 클래스 외부에서 :: 연산자 사용

class MyClass
{
    const CONST_VALUE = 1;
}
$classname = 'MyClass';
echo $classname::CONST_VALUE; //自PHP5.3.0起
echo MyClass::CONST_VALUE;

세 가지 특수 키워드 self, parent 및 static은 클래스 정의 또는 액세스할 메서드 내부 속성을 지정하는 데 사용됩니다.

예제 #2 클래스 정의 내에서 사용:

function __autoload($classname){
    require_once($classname.".php");
}
class OtherClass extends MyClass
{
    public static $my_static = 1;
    public static function doubleColon(){
        echo parent::CONST_VALUE.&#39;<br>&#39;;
        echo self::$my_static,&#39;<br>&#39;;
    }
}
$classname = &#39;OtherClass&#39;;
echo $classname::doubleColon();
OtherClass::doubleColon();

하위 클래스가 상위 클래스의 메서드를 재정의하면 PHP는 상위 클래스의 재정의된 메서드를 호출하지 않습니다. 상위 클래스의 메소드 호출 여부는 하위 클래스에 따라 다릅니다. 이 메커니즘은 생성자, 소멸자, 오버로딩 및 매직 메서드에서도 작동합니다.

예제 #3 상위 클래스의 메서드 호출

class MyClass
{
    protected function myFunc()
    {
        echo &#39;MyClass::myFunc()<br>&#39;;
    }
}
class OtherClass extends MyClass
{
    //覆盖了父类的定义
    public function myFunc()
    {
        //但还是可以调用父类中被覆盖的方法
        parent::myFunc();
        echo &#39;OtherClass::myFunc()<br>&#39;;
    }
}
$class = new OtherClass();
$class -> myFunc();

출력 결과:

MyClass::myFunc()

OtherClass::myFunc ()


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