Как переопределить константу класса в PHP?

Работая с константами, я всегда пытался определить константы, подобные приведенным ниже, которые позволяют конечным пользователям переопределять свои значения.

if ( ! defined( 'MY_CONST' ) )
define ( 'MY_CONST', 10 );

Теперь я начал работать с классами (ООП) и хотел бы знать, есть ли способ определить константу класса, которая позволит конечным пользователям переопределять значение?

Refs:

1

Решение

Если ваши пользователи расширяют ваш класс, они могут просто переопределить константу:

class Foo extends Bar {
const BAZ = 42;
}

Неважно, Bar уже определяет BAZ постоянный или нет. Все, что вам нужно сделать в вашем коде, это убедиться, что вы ссылаетесь на константу «current classes», используя позднюю статическую привязку:

public function useConst() {
echo static::BAZ;
}

В противном случае у вас есть возможность сделать это:

if (!defined('BAZ')) {
define('BAZ', 42);
}

class Bar {
const BAZ = BAZ;
}

Это не очень элегантно, хотя. Вы должны использовать геттеры и сеттеры в своем классе, чтобы разрешить настройку, а не использовать константы для этой цели:

Bar::setBaz(42);
3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector