Und wo habe ich deklarieren und initialisieren vertauscht?
Du hast nicht nur "Java Like" platziert, du hast auch die Array-Größe vergessen anzugeben.
Nochmal im Klartext:
Es geht um das Pragma "saubere Programmierung"!
Du reitest auf einer in Deinen Augen unnötigen Zeile rum, welches Du im späteren Beispiel auch noch mit einer weiteren unnötigen else-Klause ersetzten willst.
Dein Prinzip scheint es zu sein möglichst kurzen und dadurch schwer lesbaren, fehleranfälligen Code zu produzieren.
Dir steht Deine Meinung gerne zu. Aber was ist falsch daran einem PHP-Anfänger von vornherein einen guten Programmierstiel beizubringen?
Saubere Programmierung:
Da gehört aber viel mehr dazu.
Zu allererst einmal die nötigen Kommentare, die fehlen in seinem Script komplett.
Dazu wird beim "sauberen Programmieren" direkt am Anfang des Programms zu allererst jede benutzte Variable erstmal deklariert & initialisiert.
Dazu kommt, dass die Benennung der Variablen auch durchdacht sein sollte und als Anfangsbuchstabe der Datentyp der Variable stehen sollte (bsp: iZahl, fDurchschnitt, sDomain).
Davon mal ganz abgesehen fehlen sämtliche Body-Tags, Head-Tags, ...
Um es "sauber" zu programmieren sollte das Script dann wohl in etwa so aussehen:
Code:
// Variablen deklarieren & belegen
$sDomain = htmlentities(@$_GET["domain"]);
// prüfen, ob $sDomain Inhalt enthält
if (isset($sDomain))
{
// $sDomain enthält Inhalt - aktuelle Domain als Link an test.html anhängen
file_put_contents("test.html",'<a href="http://'.$sDomain.'">LINK</a>', FILE_APPEND);
}
else
{
// $sDomain enthält keinen Inhalt - Script beenden, Fehler auswerfen
die('Fehler - $sDomain ist nicht belegt!');
}
Dazu müsste natürlich die "test.html" entsprechende Tags von Anfang an enthalten/vorweisen und beim auslesen darauf geachtet werden, dass man ein entsprechendes "</body></html>" am Ende anhängt.
Dein Prinzip scheint es zu sein möglichst kurzen und dadurch schwer lesbaren, fehleranfälligen Code zu produzieren.
Möglichst kurzen? Nein, eher performanten und kompakten.
Wer nichtmal weiß, wie man eine Verkettung diverser logischer und mathematischer Operatoren liest (z.B., dass man bei sowas von rechts nach links liest), dann sollte man sowieso überlegen, ob man beim programmieren richtig ist.
Schau dir mal den Quellcode des Linux-Kernel an ... was dich da so erwarten wird!
Du reitest auf einer in Deinen Augen unnötigen Zeile rum, welches Du im späteren Beispiel auch noch mit einer weiteren unnötigen else-Klause ersetzten willst.
Unnötige Else-Klausel? Kommt ganz auf die Struktur des Programms an, ob er später nochmal mit $domain arbeiten will, oder ob er es nicht tun will.
Davon abgesehen hat mich mein Programmieren-Dozent mal was gelehrt, nämlich dass überall nur "if"-Blöcke, ohne "else"-Zweig ganz furchtbarer Stil sind.
Davon mal ganz abgesehen:
Code:
if (isset($_GET["domain"]))
$domain = htmlentities($_GET["domain"]);
else
$domain = "";
Schau dir den Block mal etwas genauer an.
Du wirst sehen, dass man im IF-Teil direkt doch glatt das Schreiben in die Datei gelöst werden könnte - im else-Block könnte man doch glatt eine Fehlerausgabe hineinschreiben, oder?
Ob ich nun direkt zu Anfang prüfe, ob die Variable befüllt ist und entsprechend reagiere, oder ob ich sie erst initalisiere, dann befülle und dann prüfe ... oder ob ich gleich checke, ob im $_GET überhaupt was drinsteht und dann entsprechend die Operation ausführe - das ist doch Wurst, oder?
Nur in deinem Fall muss erstmal $domain initialisiert werden, danach muss eine Abfrage Richtung Get kommen, was drin steht - danach die If-Abfrage, ob $domain belegt ist (wo ja zwischendrin nochmal das Get nach $domain geschrieben werden musste). Danach wird geschrieben.
Bei mir ist das so: If-abfrage - ja im get steht was drin, Daten direkt in die Datei schreiben, alternativ vorher in eine Variable einfügen.
Im Else-Zweig kommt ne Fehlerausschrift, falls der If-Kontext nicht zutrifft und fertig.
Das initialisieren der Variable ist an der Stelle einfach nur überflüssig.
Da kannst du mit noch so einem tollen, sauberen Programmierstil kommen - entweder richtig, oder gar nicht.
Und wenn du schon erzählen willst, wie in C Variablen deklariert werden, dann mach es bitte auch richtig und komm nicht mit ner Ausrede vonwegen Java un so ...
In Java kann man nämlich genauso schreiben:
char cName[] = new char[20];