최근에는 상수에 정수 값을 할당하고 그 목적을 식별하는 수단으로 상수 이름을 사용하는 습관을 가졌습니다. 그러나 어떤 경우에는 문자열 표현이 필요할 때 typeToString ($ const)과 같은 함수를 작성할 필요가 있습니다. 분명히 이것은 비효율적이고 불필요한 것이지만, 때때로 문제 일뿐입니다.PHP 상수 : 장점/단점
제 질문은 고려해야 할 다른 단점이 있습니까? 어떤 경우가보다 깔끔하고 표준에 부합되는 것으로 간주됩니까? 또한 대부분의 경우 성능 차이가 무시 될 수 있습니까?
사례 1 : (빠른 문자열 버전이 필요하지?)
class Foo {
const USER_TYPE_ADMIN = 0;
const USER_TYPE_USER = 1;
const USER_TYPE_GUEST = 2;
public $userType = self::USER_TYPE_ADMIN;
public function __construct($type) {
$this->userType = $type;
}
public function typeToString() {
switch($this->userType) {
case self::USER_TYPE_ADMIN:
return 'admin';
break;
case self::USER_TYPE_USER:
return 'user';
break;
case self::USER_TYPE_GUEST:
return 'guest';
break;
default:
return 'unknown';
break;
}
}
}
$foo = new Foo(Foo::USER_TYPE_GUEST);
echo $foo->typeToString();
// Displays "guest"
사례 2 : (빠르게/쉽게 문자열 버전이 필요)
class Foo {
const USER_TYPE_ADMIN = 'admin';
const USER_TYPE_USER = 'user';
const USER_TYPE_GUEST = 'guest';
public $userType = self::USER_TYPE_ADMIN;
public function __construct($type) {
$this->userType = $type;
}
}
$foo = new Foo(Foo::USER_TYPE_GUEST);
echo $foo->userType();
// Displays "guest"
혼란 스러워요 - 케이스 2에서 0, 1, 2를 "admin", "user", "guest"로 변경 하시겠습니까? – Greg
그래, 나는 확실히했다! :-) 잡아 주셔서 감사합니다. 지금 업데이트해야합니다. – Wilco