2009-08-03 3 views
0

Ich bekomme den folgenden seltsam aussehenden Fehler.Einen Fehler "Verwendung von undefinierten Konstanten" bekommen, den ich nicht herausfinden kann

  • Unexpected PHP-Fehler [Verwendung von undefinierte Konstante s - angenommen 's'] Schwere [E_NOTICE] in [C: \ Dokumente und Einstellungen \ yepthatsme \ Eigene Dateien \ Dev \ nicnames \ main \ resources \ \ Name beinhaltet .inc.php Linie 180]

Die Linie wird mit Bezug auf hat:

 $types = nicnames_config::$resourcetypes; 

nicnames_config :: $ resource ist ein Array. Ich habe keine Ahnung, woher das kommt, von dem es spricht, und ich fange an zu denken, dass es ein PHP-Bug sein könnte, obwohl ich vielleicht etwas verpasst habe. Wo soll ich hinschauen?

Ich verwende SimpleTest zum Testen, und dieser Fehler tritt während eines bestimmten Tests auf.

Falls Sie interessiert sind, hier ist diese Linie im Kontext:

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(); 
} 

Edit: Problem nun gelöst ist, meine eigene Antwort sehen.

+0

what class nicnames_config {} sieht aus? – scott

Antwort

2

Die PHP-Fehlermeldung bekam den Fehlerort falsch - ich fand schließlich einen streunenden Buchstaben 's' am Ende einer Zeile irgendwo in einer komplett anderen Quelldatei - der, wo die Klasse nicnames_config, und dies statisches Mitglied, wurde definiert.

Es scheint, dass bei Verwendung statischer Membervariablen der Variablenwert nicht zugewiesen wird, wenn die Klasse deklariert wird, sondern wenn die Variable zuerst referenziert wird (rate, dass es sich um eine anständige Optimierung handelt), wenn bei der Zuweisung des Werts ein Fehler auftritt PHP ruft den Fehlerort falsch auf.