PHP-константы: преимущества / недостатки

В последнее время я привык присваивать целочисленные значения константам и просто использовать имя константы как средство определения ее цели. Однако в некоторых случаях это приводило к необходимости написать функцию типа 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"

Ответы на вопрос(5)

Ваш ответ на вопрос