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

伊谢尔伦
풀어 주다: 2016-11-23 14:13:35
원래의
1157명이 탐색했습니다.

범위 확인 연산자(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 ()


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!