@theollovein

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

Наследую класс:
class MyAudit extends \Audit{
//переопределяю родительскую константу
const UA_Mobile = 'android|blackberry|phone|ipod|palm|windows\s+ce|BB10';
}

В итоге от моего переопределения нет никакого эффекта, родительский метод продолжает использовать свою константу.
Вот функция родительского класса, для которой я все эти махинации провожу, т.к не хочу вмешиваться в ядро фреймворка.
function ismobile($agent=NULL) {
		if (!isset($agent))
			$agent=Base::instance()->get('AGENT');
		return (bool)preg_match('/('.self::UA_Mobile.')/i',$agent);
	}
  • Вопрос задан
  • 1991 просмотр
Решения вопроса 3
@hufawoso
Проще переопределить метод.
Ответ написан
Комментировать
DevMan
@DevMan
так в методе родительского класса self указывает именно на родительский класс.
соответственно, используется константа базового класса, а не своего.

нужно либо переопределять нужный метод в своем классе, либо поправить метод родительского.
Ответ написан
Комментировать
knetesin
@knetesin
Шпион
он и будет использовать свою константу т.к self::UA_Mobile работает в контексте класса в котором определен, если бы там было statiс::UA_Mobile то всё работало бы, как и ожидается.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы