[ php ] 스코프 해결 연산자 / Scope Resolution Operator (::) > PHP

본문 바로가기
사이트 내 전체검색

PHP

[ php ] 스코프 해결 연산자 / Scope Resolution Operator (::)

페이지 정보

작성자 웹지기 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 댓글 0건 조회 472회 작성일 19-05-07 19:28

본문

 Scope Resolution Operator (Paamayim Nekudotayim이라고도 함) 또는 더 간단한 용어인 이중 콜론은 

정적 , 상수 및 재정의 된 속성 또는 클래스의 메서드에 대한 액세스를 허용하는 토큰입니다 .

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

PHP 5.3.0부터 변수를 사용하여 클래스를 참조 할 수 있습니다. 변수의 값은 키워드가 될 수 없습니다 (예 : 자기 , 부모 및 정적 ).

Paamayim Nekudotayim은 처음에 이중 콜론의 이름을 짓는 이상한 선택처럼 보였습니다. 그러나 Zend Engine 0.5 (PHP 3의 성능을 제공함)를 작성하는 동안 Zend 팀이이를 호출하기로 결정했습니다. 그것은 실제로 이중 콜론을 의미합니다 - 히브리어로!


Example # 1 :: 클래스 정의 외부에서

<?php

class MyClass {

    const CONST_VALUE = 'A constant value';

}

$classname = 'MyClass';

echo $classname::CONST_VALUE; // As of PHP 5.3.0

echo MyClass::CONST_VALUE;

?>

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


Example # 2 :: 클래스 정의 내부에서

<?php

class OtherClass extends MyClass

{

    public static $my_static = 'static var';


    public static function doubleColon() {

        echo parent::CONST_VALUE . "\n";

        echo self::$my_static . "\n";

    }

}


$classname = 'OtherClass';

$classname::doubleColon(); // As of PHP 5.3.0


OtherClass::doubleColon();

?>


확장 클래스가 메소드의 부모 정의를 오버라이드하면 PHP는 부모 메소드를 호출하지 않습니다. 부모 메서드가 호출되는지 여부는 확장 클래스에 달려 있습니다. 이는 생성자 및 소멸자 , 오버로딩 및 Magic 메서드 정의 에도 적용됩니다 .


Example # 3 부모 메소드 호출하기

<?php

class MyClass

{

    protected function myFunc() {

        echo "MyClass::myFunc()\n";

    }

}


class OtherClass extends MyClass

{

    // Override parent's definition

    public function myFunc()

    {

        // But still call the parent function

        parent::myFunc();

        echo "OtherClass::myFunc()\n";

    }

}


$class = new OtherClass();

$class->myFunc();

?> 


추천0 비추천0

댓글목록

등록된 댓글이 없습니다.

Total 77건 1 페이지
게시물 검색

회원로그인

접속자집계

오늘
326
어제
398
최대
1,323
전체
93,476

그누보드5
Copyright © funyphp.com. All rights reserved.