Hallo Forum,
Anlass für mein heutoges Post ist die Weiterentwicklung von php, bzw. meine hieraus resultierenden Problemchen.
Wir wissen also, dass ab php8 Indizes in arrays, die ohne anführungszeichen mitgegeben werden, konsequenterweise als Konstante behandelt werden und nicht mehr als String, so denn keine Konstante vorhanden.
Ebenfalls wird es irgendwann (ich weiß nicht, ab wann, in php8 vermutlich noch nicht, aber irgendwann mal ganz sicher!) mal als fatal error
ausgeworfen, wenn Parameter in Funktionsaufrufen nicht als String (in Anführungszeichen) übergeben werden.
Also my_function('param1',param2); ergibt heute noch ein warning, irgendwann aber mal einen fatal error.
Und hier habe ich in unzähligen Scripten unzählige Male "gesündigt", daher mein Post.
Ich würde gerne ein Script drüber laufen lassen, was mir das ausmerzt. Wäre es immer derselbe Fehler, hatte ich an sowas hier gedacht:
function dir_rekursiv($verzeichnis)
{
$handle = opendir($verzeichnis);
while($datei = readdir($handle)) {
if($datei != "." && $datei != "..") {
if(is_dir($verzeichnis.$datei)) // Wenn Verzeichniseintrag ein Verzeichnis ist
{
// Erneuter Funktionsaufruf, um das aktuelle Verzeichnis auszulesen
dir_rekursiv($verzeichnis.$datei.'/');
} else {
if(strstr($verzeichnis.$datei,".php")) {
$name = explode(".",$verzeichnis.$datei);
if($datei != "replace.php") { // diese Datei
$dateiinhalt = file_get_contents("".$verzeichnis.$datei."");
// replace
$dateiinhalt = file_get_contents("".$verzeichnis.$datei."");
file_put_contents("".$verzeichnis.$datei."",str_replace('test','test123',$dateiinhalt));
}
}
}
}
}
closedir($handle);
}
dir_rekursiv('mypath');
echo("fertig");
Einfach Austausch von 'test' in 'test123' in jeder Zeile, die gefunden wird, bezogen auf ein komplettes Verzeichnis. Habe es jetzt nicht laufen lassen, aber das sollte so funktionieren, wenn ich keine flüchtigen Fehler eingebaut habe.
Ich suche aber ja keine feststehenden Begriffe, sondern etwas anders.
Meine Funktionsaufrufe sind immer nach folgendem Prinzip:
my_funktion($myVariable,myString)
Und natürlich ist myString ab und zu mal korrekterweise in Anführungszeichen (mal einfache, mal doppelte) gesetzt und meistens nicht.
Wie bringe ich also meinem Script bei, dieses myString immer in Anführungszeichen zu setzen, falls das noch nicht der Fall ist?
Jörg