yens: Scriptstücke auslagern

Hi,

ich bin in einer PHP-Anwendung in der Situation, einen größeren Teil Script (ca. 2 Monitorhöhen) mehrmals zu benötigen.
In eine Funktion schreiben ist aber nicht, da auf sehr viele Variablen zugegriffen wird, die der Compiler dann nicht findet, weil sie ausserhalb des Scriptstücks deklariert werden.

Ist es nun "modisch", die Scriptstücke in eine separate Datei auszulagern und mit include einzubinden?

Oder soll ich auf die Auslagerung verzichten und das Scriptstück lieber doppelt in die Datei setzen. Dann hätte ich auch das Problem, bei Änderungen doppelt ändern zu müssen bzw. laufe immer Gefahr, dass die beiden nicht synchron sind.

Gruß
Jens

  1. Hallo yens,

    2 Monitorhöhen

    coole Einheit!

    ... Dann hätte ich auch das Problem, bei Änderungen doppelt ändern zu müssen bzw. laufe immer Gefahr, dass die beiden nicht synchron sind.

    schon deshalb würde ich es auslagern.

    In eine Funktion schreiben ist aber nicht, da auf sehr viele Variablen zugegriffen wird, die der Compiler dann nicht findet, weil sie ausserhalb des Scriptstücks deklariert werden.

    doch, das geht mit global.

    Alex

    1. Hello,

      doch, das geht mit global.

      Von PHP hatte yens aber nix geschrieben. Oder habe ich das überlesen?

      Harzliche Grüße vom Berg
      http://bergpost.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
      Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

      1. Hallo Tom,

        Von PHP hatte yens aber nix geschrieben. Oder habe ich das überlesen?

        Zitat yens:

        ich bin in einer PHP-Anwendung [...]

        ^^^

        Alex

        1. Hello Alex,

          Von PHP hatte yens aber nix geschrieben. Oder habe ich das überlesen?

          Zitat yens:

          ich bin in einer PHP-Anwendung [...]

          Entschuldige bitte.
          Habe ich es doch überlesen.
          Jaja, das Alter der Augen und keine Krankenkasse im Moment :-((

          Genug der Ausreden,

          dann darf man ja auch ruhig "Array" sagen
          https://forum.selfhtml.org/?t=160540&m=1044190
          denn andere selbstdefinierte Datenstrukturen unterstützt das prozedurale PHP ja doch nicht wirklich

          OK, es gibt noch pack() und unpack() und ich bevorzuge manchmal noch eine Stringansammlung oder ein "Array of String", aber das ist nicht wirklich programmiererfreundlich bei PHP

          Harzliche Grüße vom Berg
          http://bergpost.annerschbarrich.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau
          Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

          1. Hello,

            und jetzt habe ich doch glatt vergessen, auf "PHP" umzuschalten...

            Harzliche Grüße vom Berg
            http://bergpost.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
            Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

  2. Hallo Jens,

    In eine Funktion schreiben ist aber nicht, da auf sehr viele Variablen zugegriffen wird, die der Compiler dann nicht findet, weil sie ausserhalb des Scriptstücks deklariert werden.

    Dann solltest du den Aufbau deines Programms überdenken. Globale Variablen solltet man auf ein Minimum reduzieren und innerhalb von Funktionen am besten gar nicht darauf zugreifen, sondern die entsprechenden Daten als Funktionsargumente zu übergeben.

    Achim Schrepfer hat übrigens einen Feature-Artikel zu dieser Problematik geschrieben: "Entwicklung wiederverwendbarer Software".

    Schöne Grüße,

    Johannes

  3. Hallo,

    ich bin in einer PHP-Anwendung in der Situation, einen größeren Teil Script (ca. 2 Monitorhöhen) mehrmals zu benötigen.
    In eine Funktion schreiben ist aber nicht, da auf sehr viele Variablen zugegriffen wird, die der Compiler dann nicht findet, weil sie ausserhalb des Scriptstücks deklariert werden.

    ich würde dir empfehlen, den Aufbau deiner Anwendung zu überdenken. Eine mögliche Lösung deines aktuellen Problems z.B. ist wahrscheinlich möglich. Es ist aber sehr wahrscheinlich, das du bald wieder auf Probleme stößt.

    Versuche, die Aktionen in kleine Einheiten zu unterteilen, die man in Funktionen unterteilen kann.

    Noch besser wäre es wahrscheinlich, eine objektorientierte Analyse durchzuführen, und die Anwendung objektorientiert zu realisieren.

    Gruß

    Stareagle

  4. Hello,

    In eine Funktion schreiben ist aber nicht, da auf sehr viele Variablen zugegriffen wird, die der Compiler dann nicht findet, weil sie ausserhalb des Scriptstücks deklariert werden.

    Ich würde in einem solchen Fall immer einen Zeiger auf einen Variablenblock übergeben.
    In allen mir bisher bekannten Programmiersprachen (des täglichen Gebrauchs) geht das ganz komplikationslos.

    Harzliche Grüße vom Berg
    http://bergpost.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

    1. Hi,
      meinst du mit Variablenblock, ich soll alle benötigten Variablen in ein Array tun?
      Oder heisst das was anderes? Wenn ich das richtig verstanden habe, werden Variablen ja normalerweise kopiert, während bei übergebenen Arrays nur der Zeiger übermittelt wird und die Funktion das Original bearbeitet.

      Schöne Grüsse,
      Jens

      1. Hello,

        meinst du mit Variablenblock, ich soll alle benötigten Variablen in ein Array tun?

        Jein...
        Ich meine, dass Du alle benötigten Variablen, die zusammengehören, in eine Datenstruktur packen sollst. Deren Zeiger kannst Du dann an die Funktionen übergeben.

        Falls nötig, kannst Du den zur Struktur gehörigen Speicherbereich auch vorher nochmal kopieren und den Zeiger der Kopie übergeben.

        Ein Array ist eigentlich in der Nomenklatur der Datentechnik schon eine Stufe größer, nämlich die Anreihung gleicher oder zumindest gleichartiger Datenstrukturen in wiederkehrender Folge.

        Oder heisst das was anderes? Wenn ich das richtig verstanden habe, werden Variablen ja normalerweise kopiert, während bei übergebenen Arrays nur der Zeiger übermittelt wird und die Funktion das Original bearbeitet.

        siehe oben...

        so nebenbei fällt mir noch ein:

        Beton: kommt darauf an, was man daraus macht *ggg*

        Harzliche Grüße vom Berg
        http://bergpost.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)