Software die für PHP4 entwickelt wurde, entwickelt unter PHP5 oftmals ein interessantes Eigenleben...
Problem
Als ich heute ein Script getestet habe, welches unter PHP4 entwickelt wurde, kam es zu dieser Fehlermeldung: Fatal error: Only variables can be passed by reference.
Da das Script von einer bekannten Seite war, kam mir das schon ein wenig komisch vor. Die werden doch nicht ein kaputtes Script veröffentlichen. Kaputt deswegen, weil ein Fatal error ausgelößt wird und die Scriptverarbeitung anhält.
Lösung
Also schaute ich mir den Code ein wenig an. Ihr könnt ihn in Listing 1 sehen. Nach kurzer Überlegung entschloss ich mich den Rückgabewert der Methode getRelatedEntries erst in eine Variable zu kopieren. und dann erst der Methode getRelatedEntriesHtml zu übergeben. Das ist auch die Lösung für das Problem Only variables can be passed by reference.
Wenn ihr auch vor dem Gleichen Problem stehen solltet, kopiert einfach, das was ihr übergeben wollt in eine neue Variable und schon gehts. Der geänderte Code steht in Listing 2.
Listing 1
Download Code!
// ...Viel PHP Code
$this->getRelatedEntriesHtml($this->getRelatedEntries($tags[$eventData[0]['id']], $eventData[0]['id']));
Listing 2
Download Code!
$xyFoo = $this->getRelatedEntries($tags[$eventData[0]['id']], $eventData[0]['id']);
$this->getRelatedEntriesHtml($xyFoo);