Hi ich kriege immer einer Fehlermeldung und bekomm die aber nicht weg.

nickinami

Grünschnabel
PHP:
$this->sTitle = str_replace('KnowledgeTree', APP_NAME, $this->aHelpInfo['title']);

Fatal error: Cannot use object of type PEAR_Error as array in C:\Programme\xampp\htdocs\docm\plugins\ktcore\KTDashlets.php on line 88

Wie kann mann den obigen Code ändern, dass der Fehler nicht meht kommt?
Ich vermute, dass es an diesem Stück liegt. Wenn ich den part ändern könnte, wäre mir denke ich auch schon sehr geholfen.
PHP:
$this->aHelpInfo['title'])

danke im voraus
nicki
 
Hi!
Erstmal einige Fragen an DICH ;) :
Was wird mit "APP_NAME" übergeben?
Was willst du hier
PHP:
$this->aHelpInfo['title'])
genau machen?
 
sry, hab wohl ein bißchen bei dem zweiten codeschnippsel vergessen zu schreiben!

ich weiß leider auch nicht genau was da gemacht wird, das is ne fertige anwendung, die aber leider in der zeile immer einen fehler auswirft

PHP:
$this->sTitle = $this->aHelpInfo['title'];


das ist die zeile aus einer vorgängerversion. das ganze funktioniert mit php4 aber leider nicht mit php5, da wollte ich wissen wie man die zeile umformulieren kann, so das php5 die auch akzeptiert und keine fehler schmeißt
 
Hmm! Also $this müsste eigentlich ein Objekt sein! APP_NAME nehme ich an ist eine Konstante.

Ich denke mal, das Problem liegt nicht direkt bei dem APP_NAME sondern bei
$this->aHelpInfo['title']

Versuche mal, dass du dir $this->aHelpInfo['title'] ausgeben lässt:

PHP:
print_r[$this->aHelpInfo['title']];

Denn so eine konstruktion hab' ich noch nie gesehen. Vielleicht läufts aber auch wenn du vor das aHelpInfo ein $-Zeichen hängst. ($this->$aHelpInfo['title'])

Kann auch nur vermuten was es da haben kann!

Vielleicht kannst du mal den Code schicken der mit der Zeile zusammenhängt, sprich wo $this gefüllt wird.

mfg
nero_85
 
Bevor hier weitere Verirrungen entstehen, würde mich die Ausgabe folgenden paar Codezeilen, die vor genau der betroffenen Zeile eingefügt werden sollen, interessieren:

PHP:
print("Debugging Start\n"); var_dump($this, APP_NAME, $this->aHelpInfo['title']);print("Debugging Stop\n");

Die Fehlermeldung sagt es schon: Irgendeine Variable ist eine Instanz des Objekts "PEAR_Error" und besitzt keine Umwandlungsfunktion zum Typ Array. Anscheinend wird $this->aHelpInfo['title'] irgendwo in eine Instanz des genannten Objekts gewandelt oder durch eine Kopie oder Referenz auf ein solches Objekt überschrieben. Die [phpf]str_replace[/phpf] kommt aber nur mit "eindimensionalen" Werten oder "zweidimensionalen" Arrays klar (schließt Objekte und Resourcen aus).
Wenn $this->aHelpInfo['title'] wirklich vom Typ PEAR_Error sein sollte, ist es in vorgefertigten Anwendungen immer recht kompliziert, den Fehlerursprung zu ermitteln - Hoffe, du hast nen ordentlichen Debugger parat um die Änderung der Werte zu verfolgen ;)

@Nero: Seit wann ruft man Funktionen mit eckigen Klammern auf? o.O
 
Zurück