Thorsten Steffen: häufig benötigte Funktionen auslagern

Moin,

Folgendes Szenario:

es gibt eine Reihe von Klassen für verschieden Aufgaben. Welche Genau ist denke ich irrelevant.
In den Klassen gibt es eine Reihe von wiederkehrenden Funktionen. Z.b. Dateien einlesen, CSV-Daten in ein Array einlesen, Array zu CSV exportieren.
Bisher sieht das so aus, das jede Klasse die Funktionalität die sie benötigt direkt integriert hat, z.b.

class example {

function _CSV2Array() {
    }

}

Damit habe ich eine Reihe von redundanten Funktionen, wenn nun ein Fehler in einer entdeckt wird, müssen alle durchgeschaut werden.
Die erste Idee war, diese Funktionalität in eine Basisklasse zu integrieren, wobei ich denke diese dann zu gross werden könnte (je mehr einzelaufgaben dazu kommen)
Auch gleich eine eigene Klasse für jede Teilaufgabe zu machen halte ich nicht für sinnvoll.

Nun überlege ich ob ich diese Funktionen auslagern soll, und den Zugriff einer anderen Klasse überlasse. Ich hätte den Vorteil, das ich diese Funktionaität zentral verwalten und verbessern kann.

in etwa so

class example {

$list = maintenance::callFunction("CSV2Array", "daten.csv");

}

Was spricht dagegen? Hat jemand Erfahrung mit diesem Weg gemacht?
Würde mich freuen wenn ihr ein paar Anregungen,Tipps oder Hinweise hättet.

  1. du musst ja nicht alles in klassen auslagern, ne einfache funktions-libary tuts in solchen fällen sicherlich auch.

    mfg Chris

    1. Hi Chris,

      du musst ja nicht alles in klassen auslagern, ne einfache funktions-libary tuts in solchen fällen sicherlich auch.

      so in der Art wars gedacht. Nur keine gesammelte Library, sondern einzelne Funktionen.

      so die Idee (grob ^^)

      class maintenance {

      callFunction($functionName, $paras) {

      if (!is_file("functions/$functionName".".php")) return false;
          include_once("functions/$functionName".".php");
          $functionName("$paras");
          }
        }

      Ich müsste so nur die jeweils benötigten Funktionen laden, und falss ich keine bräuchte lad ich halt auch keine.
      Hätte ich da grosse Nachteile gegenüber einer Library mit gesammelten Funktionen?

      gruss
      Thorsten

      1. Hello,

        Ich müsste so nur die jeweils benötigten Funktionen laden, und falss ich keine bräuchte lad ich halt auch keine.

        Das Laden von 1MB Funktionen dauert vielleicht 25-30 ms, das Laden von 10kB Funktionen dauert dann immer noch 22ms oder so ähnlich. Und wenn Du 10 mal 10kB lädtst, dann dauert das eben 220ms. Und das Filesystem wird stärker belastert, als wenn Du gleich alles auf einmal holst.

        Einziger Vorteil Deiner Methode ist die Schonung des Arbeitsspeicher, aber auch nur dann, wenn die Fielgröße nicht zu klein wird. Jedes File benötigt einen Buffer und einen Statuscache und ich weiß nicht, wann die von PHP zurückgegeben werden.

        Liebe Grüße aus http://www.braunschweig.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen