Получение ошибки «Использование неопределенной константы», которую я не могу понять - PullRequest
0 голосов
/ 03 августа 2009

Я получаю следующую странно выглядящую ошибку.

  • Неожиданная ошибка PHP [Использование неопределенной константы s - предполагаемая 's') серьезность [E_NOTICE] в [C: \ Documents and Settings \ yepthatsme \ Мои документы \ Dev \ nicnames \ main \ resources \ includes \ name.inc. php line 180]

Строка, на которую он ссылается, имеет:

        $types = nicnames_config::$resourcetypes;

nicnames_config :: $ resourcetypes - это массив. Я понятия не имею, откуда взялись эти слова, и я начинаю думать, что это может быть ошибка PHP, хотя, возможно, я что-то упустил. Куда мне смотреть?

Я использую SimpleTest для проведения тестирования, и эта ошибка возникает во время определенного теста.

Если вам интересно, вот эта строка в контексте:

function getstrings()
    // returns array of strings suitable for human-readable rendering of this
    // piece of informtion.  Contains such fields as 'title', 'subtitle', 
    // 'pre-qualifier', 'post-qualifier', 'comment', etc
{
    $types = nicnames_config::$resourcetypes; // line 180

    $type = isset($types['name_type'][$this->type]) ?
        $types['name_type'][$this->type] : $this->type;
    $givens = $this->givennames == '' ? null : $this->givennames;
    return array(
        'title' => $this->surnamefirst ? ($this->surname . ',') : $givens,
        'subtitle' => $this->surnamefirst ? $givens : $this->surname,
        'pre-qualifier' => $type,
        'post-qualifier' => $this->title == '' ? null : ('(' . $this->title . ')'),
    ) + $this->getcommonstrings();
}

Редактировать: теперь проблема решена, см. Мой собственный ответ.

1 Ответ

2 голосов
/ 03 августа 2009

В сообщении об ошибке PHP указывалось неверное местоположение ошибки - в конце концов я обнаружил случайную букву 's' в конце строки где-то в совершенно другом исходном файле, где находится класс nicnames_config и этот статический член , был определен.

Похоже, что при использовании статических переменных-членов значение переменной присваивается не тогда, когда класс объявлен, а когда эта переменная впервые упоминается (хотя это хорошая оптимизация), однако, если при присвоении значения PHP возникает ошибка неверно определяет местоположение ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...