代码之家  ›  专栏  ›  技术社区  ›  thomasrutter

得到一个“使用未定义常量”的错误,我无法理解

  •  0
  • thomasrutter  · 技术社区  · 15 年前

    我发现以下奇怪的错误。

    • 意外的php错误[c:\documents and settings\yepthatsme\my documents\dev\nicnames\main\resources\includes\name.in c.php line 180]中的[use of undefined constant s-assumed's']severity[e\u notice]

    它所指的行具有:

            $types = nicnames_config::$resourcetypes;
    

    nicnames_config::$resourcetypes是一个数组。我不知道它所说的“s”是从哪里来的,我开始认为这可能是一个PHP bug,尽管也许我错过了一些东西。我该去哪里看看?

    我使用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 回复  |  直到 12 年前
        1
  •  2
  •   thomasrutter    15 年前

    PHP错误消息得到错误的错误位置-我最终在一个完全不同的源文件中的某个行尾找到了一个多余的字母“s”-nicnames_config类和这个静态成员的定义位置。

    似乎在使用静态成员变量时,变量值不是在声明类时分配的,而是在第一次引用变量时分配的(假设这是一个不错的优化),但是如果在分配值时出错,php会得到错误的位置。