PHP 스코프 연산자(::)
PHP/매뉴얼 번역 2008/06/19 17:59스코프정의연산자 (Paamayim Nekudotayim 라고도 함) , 그냥 보이는 대로 부르면 더블콜론은 static, 정수(constant ) 그리고 오버라이드된 클래스의 멤버 , 메소드 에 접근 할 수 있도록 하는 토큰중에 하나이다.
위의 아이템들을 클래스정의의 외부에서 참조할때 클래스의 이름을 사용하도록 한다.
PHP 5.3.0 이후부터는 변수를 이용하여 클래스를 참조할 수 있다. 변수의 값은 키워드를 지정할수 없다. (예를 들어 self 또는 parent、 static 같은 ...)
왜 더블콜론에 Paamayim Nekudotayim 라는 이름을 붙였을까 ?
Zend Engine 0.5 (PHP 3 의 엔진) 을 작성할때 Zend 팀은 더블콜론의 이름을 이렇게 정하였다. 실은 더블콜론을 의미하는 히브루(Hebrew)어라고...
클래스정의 외부에서의 예
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 가 클래스정의의 내부에서 멤버 또는 메소드를 억세스할때 사용된다.
클래스정의 내부에서의 예
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';
echo $classname::doubleColon(); // As of PHP 5.3.0
OtherClass::doubleColon();
?>
확장된 클래스가 부모클래스의 메소드의 정의를 오버라이드할때 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();
?>
목차에
PHP 클래스와 오브젝트 ( Classes and Objects ) PHP 5
'PHP > 매뉴얼 번역' 카테고리의 다른 글
| PHP 오버로드 (0) | 2008/06/20 |
|---|---|
| PHP 오브젝트 인터페이스 (0) | 2008/06/20 |
| PHP 클래스의 추상화 (0) | 2008/06/19 |
| PHP 클래스 정수 (0) | 2008/06/19 |
| PHP static 키워드 (0) | 2008/06/19 |
| PHP 스코프 연산자(::) (0) | 2008/06/19 |
| PHP 억세스권(접근권한) : Visibility (0) | 2008/06/19 |
| PHP 컨스트럭터와 디스트럭터 (0) | 2008/06/19 |
| PHP 오브젝트의 오토로딩 (0) | 2008/06/19 |
| PHP 클래스의 기초 (0) | 2008/06/19 |
| PHP 클래스와 오브젝트 ( Classes and Objects ) PHP 5 (0) | 2008/06/19 |