클래스 상수(Class constant)
클래스 내에서만 사용하게 되는, 즉 클래스 스코프(class scope)를 갖게 되는 상수를 정의하여 사용할 수 있습니다. 따라서 클래스 상수는 클래스 내의 모든 메소드만이 접근할 수 있으며 클래스 외부에서는 접근할 수 없습니다.
그러나 메소드 내에서만 사용할 수 있는 지역 상수(local constant)는 제공되지 않습니다.
클래스 상수에 접근하기
클래스 내에서의 접근
[code php;gutter:false]
<?php
define('FATAL','Main Fatal error\n');
class ErrorCodes {
const FATAL = "Fatal error\n";
function print_fatal_error_codes() {
print "FATAL = " . FATAL;
}
}
/* Call the static function and move into the ErrorCodes scope */
ErrorCodes::print_fatal_error_codes();
?> [/code]
define('FATAL','Main Fatal error\n');
class ErrorCodes {
const FATAL = "Fatal error\n";
function print_fatal_error_codes() {
print "FATAL = " . FATAL;
}
}
/* Call the static function and move into the ErrorCodes scope */
ErrorCodes::print_fatal_error_codes();
?> [/code]
이 소스를 실행하면 클래스 ErrorCodes 내에 정의된 클래스상수 FATAL의 값이 출력될 것입니다.
'클래스명::클래스상수'를 이용한 접근
클래스명과 범위연산자(scope resolver) '::'를 이용하면 클래스 외부에서도 클래스 상수에 쉽게 접근할 수 있습니다.
[code php;gutter:false]
<?php
class foo {
const hey = 'hello';
function printHey() {
print hey;
}
}
print foo::hey;
foo::printHey();
?> [/code]
class foo {
const hey = 'hello';
function printHey() {
print hey;
}
}
print foo::hey;
foo::printHey();
?> [/code]
접근자 self, parent, main 및 범위연산자 '::'를 이용한 접근
범위연산자 '::'와 'self', 'parent', 'main' 키워드를 이용하여 서로 다른 스코프를 갖는 상수에 접근하여 보면 아래와 같습니다.
[code php;gutter:false]
<?php
define('FATAL','Main Fatal error\n');
class ErrorBase {
const FATAL = "Base Fatal error\n";
}
class ErrorCodes extends ErrorBase {
const FATAL = "Fatal error\n";
function print_fatal_error_codes() {
print "FATAL = " . FATAL;
print "self::FATAL = " . self::FATAL;
print "parent::FATAL = " . parent::FATAL;
print "main::FATAL = " . main::FATAL;
}
}
/* Call the static function and move into the ErrorCodes scope */
ErrorCodes::print_fatal_error_codes();
?> [/code]
define('FATAL','Main Fatal error\n');
class ErrorBase {
const FATAL = "Base Fatal error\n";
}
class ErrorCodes extends ErrorBase {
const FATAL = "Fatal error\n";
function print_fatal_error_codes() {
print "FATAL = " . FATAL;
print "self::FATAL = " . self::FATAL;
print "parent::FATAL = " . parent::FATAL;
print "main::FATAL = " . main::FATAL;
}
}
/* Call the static function and move into the ErrorCodes scope */
ErrorCodes::print_fatal_error_codes();
?> [/code]
'phpclass > 객체모델' 카테고리의 다른 글
{Zend 엔진 2.0 설계초안}13.다중 상속 (0) | 2002.12.21 |
---|---|
{Zend 엔진 2.0 설계초안}12.이름공간 (0) | 2002.12.21 |
{Zend 엔진 2.0 설계초안}10.nested 클래스 (0) | 2002.12.21 |
{Zend 엔진 2.0 설계초안}09.객체 삭제 (0) | 2002.12.21 |
{Zend 엔진 2.0 설계초안}08.객체 역참조 (0) | 2002.12.21 |