Problem: Call-time pass-by-reference

andralin

Erfahrenes Mitglied
Hallo Leute,

nachdem ich bei STRAOT einen V-Server gemietet habe, bin ich auch lokal auf PHP 5.0 umgestiegen, da mir die OOP Möglichkeiten eh besser gefallen.

Nun bekomme ich auf STRATO folgenden Fehler:
Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of db_connect(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /srv/www/vhosts/dirk-moll.de/httpdocs/FotoCms/funktionen/LogInUserCheck.php on line 5

Die betreffende Zeile ausgeführter CODE lautet:
PHP:
$db = db_connect(&$DBfehler, &$DberrNr, &$DBname);
Das ist der Aufruf einer eigenen Funktion, welche die Datenbank verbindet. DIe per Referenz übergebenen Objekte dienen folgendem Zweck:
&$DBfehler = Array auf einen Fehlerstring, der nur im Testmodus Fehler unter der eigenetlichen Seite ausgibt.
&$DberrNr 0 laufende Nummer für die Fehlerausgabe
&$DBname Datenbankname

Wie kann ich diese Meldungen verhindern, ohne das ich die INI verändere?

cu s00n
Andralin
 
Die Fehlermeldung sagt:
Nicht bei der Übergabe der Variablen die Referenz geben, sondern bei der Deklaration der Funktion.

PHP:
function foobar(&$var)
{
  // code
}

$x = 'foobar';

foobar($x);
 
Wird in der Funktionsdeklaration eine Referenzübergabe bestimmt, wird immer eine Referenz übergeben, weswegen auch immer eine Variable und nicht nur ein Wert angegeben werden muss. Wird allerdings keine Referenzübergabe bestimmt, kann bei dem Aufruf der Funktion bestimmt werden, ob eine Referenz (sprich: die Variable selbst) oder nur ein Wert übergeben wird.
Ersteres, also die Übergabe einer Referenz an eine Funktion, die keine Referenz erwartet, wird als „Call-time pass-by-reference“ bezeichnet. Dies kann unerwartete Auswirkungen haben, wenn der Entwickler diese nicht berücksichtigt hat.
 
Zurück