@xstudent

Корректно ли такое использование константных массивов в php>=5.6?

Выполняется без ошибок, работает корректно, но - phpstorm подсвечивает ошибку (не хватает разделителя). В чем ошибка?
Строка с ошибкой, места подсветки ошибок выделил жирным:
return (self::GROUPS[$groupId] & $access) === $access;

Пример кода:
class Roles
{

    const
        USER_OWNER = 1,
        USER_ADMIN = 2,
        USER_TESTER = 4;

    const
        ACCESS_VIEW = 1,
        ACCESS_APPEND_ADMIN = 2,
        ACCESS_APPEND_TESTER = 4,
        ACCESS_CHANGE_KEY = 8;

    const GROUPS = [
        self::USER_OWNER =>
            self::ACCESS_VIEW |
            self::ACCESS_APPEND_ADMIN |
            self::ACCESS_APPEND_TESTER |
            self::ACCESS_CHANGE_KEY,
        self::USER_ADMIN =>
            self::ACCESS_VIEW |
            self::ACCESS_APPEND_TESTER,
        self::USER_TESTER =>
            self::ACCESS_VIEW
    ];

    public static function hasAccess($groupId, $access)
    {
        return (self::GROUPS[$groupId] & $access) === $access;
    }
}


Та же ошибка(ожидается: точка с запятой) возникает на более простом примере:
class Roles
{
    const test = [1];

    public static function returnConst()
    {
        return self::test[0];
    }
}
  • Вопрос задан
  • 212 просмотров
Решения вопроса 1
maximw
@maximw
Возможно дело в этом.
php.net/manual/en/migration70.incompatible.php
Посмотрите раздел Changes to variable handling
В PHP7 поменялся синтаксим таких конструкций. Возможно шторм требует устранить неоднозначность.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы