>  기사  >  백엔드 개발  >  PHP에서 이중 콜론 범위 구문 분석 연산자와 화살표 -> 연산자의 차이점

PHP에서 이중 콜론 범위 구문 분석 연산자와 화살표 -> 연산자의 차이점

黄舟
黄舟원래의
2017-07-02 11:48:513610검색

이중 콜론은 일반적으로 static메서드 및 static변수를 호출할 때 사용됩니다. 이때 클래스를 인스턴스화할 필요는 없습니다. 대신 화살표 연산자 ->를 사용할 때 클래스를 인스턴스화해야 합니다(또는 클래스 내부에서 호출할 수 있습니다.)

이중 콜론(::)은 위치 액세스 기호입니다. 이는 단지 정적 메서드와 변수를 의미하는 것이 아닙니다. 그런데 결장의 왼쪽에 있는 것이 결장의 오른쪽에 있는 것을 부른다는 뜻이다. 그런 의미죠. 그래서. . $self는 왼쪽에 쓸 수 없습니다. $self가 먼저 구문 분석되기 때문에 $self 변수가 이전에 정의되지 않은 한 $self는 자신을 가리킵니다.
최신 버전의 PHP. 이중 콜론은 이 기능을 정확히 따르기 위해 사용됩니다. . 다음으로 대체 가능 - > object를 호출하여 변수를 가져옵니다. 위치 표시기이기 때문입니다. .

은 객체의 메서드와 속성을 구별하고 클래스의 정적 메서드와 정적 변수에 액세스하는 것입니다. 클래스의 정적 메서드와 정적 변수는 클래스에 공개되어 인스턴스화 없이 액세스할 수 있습니다. 객체의 속성은 각 클래스마다 다르므로 먼저 인스턴스화해야 합니다. C++, JAVA 등 다른 언어에서도 마찬가지입니다. (물론 그들이 제공하는 액세스 기호는 다를 수 있습니다.)

- >는 객체의 메서드와 속성에 액세스하는 것이고, ::는 액세스하는 것입니다. 클래스의 정적 메서드와 정적 변수

-> 객체 액세스 및 ::위치 액세스

모두가 이론적 부분에서 이전에 말했고 실제로 정확합니다. 하지만 PHP는 조금 다릅니다.
기본 구성에서 php는 엄격한 요구 사항이 없습니다.: 정적 메서드를 호출해야 합니다.
다음 코드를 테스트해 보면 알 수 있습니다

class t{
    public $v = 1;
    public function getVar(){
        return 1;//$this->v;
    }
}

class xxxxx
{
public function actionIndex()
    {
$x = t::getVar();
        $t = new t();
        $x = $t->getVar();
    }
}


作者:楚天乐
链接:https://www.zhihu.com/question/19782824/answer/35943595
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

위 내용은 PHP에서 이중 콜론 범위 구문 분석 연산자와 화살표 -> 연산자의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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