7 Stimmen

Strategien zur Verwaltung langer Klassendateien in PHP

Ich habe eine Menge Funktionen, die ich in eine Klasse verschieben möchte. Sie sind derzeit in ein paar ziemlich langen Dateien aufgeteilt. Ich würde lieber keine Datei mit 2500 Zeilen haben, aber soweit ich das beurteilen kann, können Sie `include` nicht verwenden, um eine Klasse in mehrere Dateien aufzuteilen. In der Theorie könnte ich die Funktionen in verschiedenen Klassen gruppieren, aber sie sind eng genug miteinander verbunden, dass ich der Meinung bin, dass sie zusammengehören und die Aufteilung einige der Nützlichkeit reduzieren wird, die ich mir erhoffe, wenn ich mich von einem prozeduralen Ansatz (mit gemeinsamen Eigenschaften anstelle einer Menge von Parametern, die in fast jeder Funktion vorhanden sind) entferne.

Ich weiß, dass dies ein wenig vage ist, aber irgendwelche Vorschläge/Hinweise? Wenn es wichtig ist, dies ist für einen Prototyp, daher hat die einfache Code-Verwaltung Vorrang vor Sicherheit und Leistung.

AKTUALISIERUNG: Lassen Sie mich sehen, ob ich etwas von der Vagheit entfernen kann:

Diese Klasse/Diese Funktionen geben den HTML-Code für ein komplexes Formular aus. Es gibt viele verschiedene Abschnitte und Variationen innerhalb jedes Abschnitts, abhängig von etwa 5 oder 6 Parametern, die derzeit an die Funktionen übergeben werden. Ich hatte gehofft, die Parameter einmal als Eigenschaften der Klasse zu definieren und dann von allen Abschnitt-Erstellungsmethoden aus darauf zuzugreifen. Wenn ich Unter-Klassen verwende, werden die Werte dieser Eigenschaften nicht ordnungsgemäß initialisiert, daher der Wunsch nach einer Klasse (Hmm... es sei denn, ich definiere sie als statisch. Ich habe vielleicht gerade meine eigene Frage beantwortet. Ich muss nachsehen, ob es irgendeinen Grund gibt, warum das nicht funktionieren würde.)

Ich habe derzeit ein Durcheinander von Funktionen wie:

get_section_A ($type='foo', $mode='bar', $read_only=false, $values_array=array()) {
    if ($this->type == 'foo') { }
    else ($this->type == 'foo') { }
}    

Also habe ich mir anfangs etwas wie Folgendes vorgestellt:

class MyForm {
    public $type;          // oder vielleicht wären sie privat
    public $mode;          // ich würde Getter und Setter verwenden
    public $read_only;     // lassen Sie uns davon nicht ablenken :)
    public $values_array;
    // usw.

    function __constructor ($type='foo', $mode='bar', $read_only=false, $values_array=array()) {
        $this->type = $type;
        // usw.
    }

    function get_sections () {
        $result = $this->get_section_A();
        $result .= $this->get_section_B();
        $result .= $this->get_section_C();        
    }      

    function get_section_A() { 
        if ($this->type == 'foo') { }
        else { }
    }
    function get_section_B() {}
    function get_section_C() {}
    // usw. für 2500 Zeilen
}

Jetzt denke ich an etwas wie:

// Datei für Container-Klasse
class MyForm {
    static $type 
    static $mode
    static $read_only
    static $values_array
    // usw.

    function __constructor ($type='foo', $mode='bar', $read_only=false, $values_array=array()) {
        MyForm::$type = $type;
        // usw.
    }

    function get_sections () {
        $result = new SectionA();
        $result .= new SectionB();
        $result .= new SectionC();
    }      
}

// Datei für Abschnitt A
class SectionA extends MyForm {
    function __constructor() { 
        if (MyForm::$type == 'foo') { }
        else { }
    }

    function __toString() {
        // Rückgabe der Zeichenfolgen-Repräsentation des Abschnitts
    }
}

// usw.

Oder wahrscheinlich brauche ich eine abstrakte Klasse von FormSection, in der die Eigenschaften vorhanden sind.

Irgendwelche anderen Ideen/Ansätze?

0voto

simeonwillbanks Punkte 1459

Diese Klasse/ dieser Satz von Funktionen gibt das HTML für ein komplexes Formular aus.

Warum entfernen Sie nicht PHP aus der Gleichung? Es scheint, als würden Sie PHP verwenden, um Ansichten zu organisieren, was mit dem Dateisystem leicht gemacht werden kann. Schreiben Sie einfach die Ansichten in HTML mit so wenig PHP wie möglich. Verwenden Sie dann PHP, um Anfragen an Ansichten zuzuordnen. Ich gehe davon aus, dass Sie Formulare mit PHP verarbeiten und dies auch weiterhin tun könnten. Allerdings werden Ihre Klassen viel kleiner, da sie nur Eingaben akzeptieren, überprüfen und wahrscheinlich speichern.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X