[ php ] 스코프 해결 연산자 / Scope Resolution Operator (::)
페이지 정보
작성자 웹지기 댓글 0건 조회 7,191회 작성일 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();
?>
관련링크
댓글목록
등록된 댓글이 없습니다.