echo $begrüßung;
Da ich meinen Code übersichtlicher gestalten will wollte ich nun den Code in verschiedene "Methoden" unterteilen.
Das ist ein sehr löbliches Anliegen.
Leider können diese dann ja nicht auf die variablen des aufrufenden Programm zugreifen.
Das allerdings widerspricht dem Sinn einer Funktion. Eine Funktion sollte eine spezielle Aufgabe kapseln, ohne von der Umgebung, in der sie läuft, etwas wissen zu müssen. Nur so kann man sie bei Bedarf auch einmal woanders einsetzen.
Wenn sie stattdessen beispielsweise ihre Aufgabe erfüllt, indem sie immer auf die globale Variable $a zugreift, du sie aber in einem anderen Script auf Variable $b anwenden willst, hast du den Salat.
Es ist auch nicht sehr übersichtlich, wenn eine Funktion Nebenwirkungen hat, die man nicht bei ihrem Aufruf sieht.
$x = 23;
$y = 42;
funktionsaufruf();
Welchen Wert hat nun $x? Auf den ersten Blick würde man meinen, er sei immer noch 23. Dass er innerhalb funktionsaufruf() geändert wird ist nicht zu erkennen.
$x = 23;
$y = 42;
$x = funktionsaufruf($x, $y);
Hier sieht man, dass $x geändert wird und dazu sein bisheriger Wert und der von $y herangezogen wird.
Variablen übergeben und zurückgeben wäre zu umständlich. gibt es noch ne andere Möglichkeit wie ich das lösen könnte?
Dein Anliegen ist es, mehr Übersicht in deinen Scriptcode zu bringen. Wenn du dabei die Funktionalitäten nicht klar abgrenzen kannst, so dass sich von globalen Werten unabhängige Funktionen ergeben, so würde ich auf die Funktionen verzichten. Stattdessen könntest du den Quelltext durch Leerzeilen und Kommentare bzw. -blöcke optisch auflockern. Besonders dann ist das zu empfehlen, wenn es sich um mehr oder weniger "Geradeaus"-Scripte handelt, die wenig oder kaum entscheidungsabhängig verzweigen.
Zwei Beispiele:
1. ein kleines klassisches EVA-Prinzip
- Entgegennahme von Suchkriterien
- Abfragen der Datensätze die den Kriterien entsprechen
- Abfrage erfolgreich?
- ja:
- solange Datensätze vorhanden sind
- Ausgabe eines Datensatzes
- sonst: Tröstmeldung
2. Ausgabe von bestimmten Artikeln soll anders aussehen
- Entgegennahme von Suchkriterien
- Abfragen der Datensätze die den Kriterien entsprechen
- Abfrage erfolgreich?
- ja:
- solange Datensätze vorhanden sind
- Wenn Sonderangebot:
- Ausgabe eines Datensatzes, Hervorhebung als Sonderangebot
- Wenn Topseller:
- Ausgabe eines Datensatzes, Hervorhebung als Topseller
- sonst:
- Ausgabe eines Datensatzes
- sonst: Tröstmeldung
Für Beispiel 1 sehe ich den Einsatz einer Funktion zur "Ausgabe eines Datensatzes" nicht unbedingt als gerechtfertigt an. Beispiel 2 wird schon komplexer. Hier finde ich einen Funktionseinsatz schon eher angebracht.
echo "$verabschiedung $name";