最近、整数値を定数に代入し、その目的を識別する手段として単に定数名を使用する習慣があります。ただし、場合によっては、文字列表現が必要な場合に typeToString($const) のような関数を記述する必要があります。明らかに、これは非効率的で不必要ですが、たまにしか問題になりません。
私の質問は、他に考慮すべきトレードオフはありますか? よりクリーン/より標準に準拠していると見なされるケースはどれですか? また、ほとんどの場合、パフォーマンスの違いは無視できますか?
ケース 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"