Strategien für die Verwaltung langer Klassendateien in PHP

Ich habe eine Reihe von Funktionen, die ich in eine Klasse verschieben möchte. Sie sind derzeit in ein paar ziemlich lange Dateien aufgeteilt. Ich würde es vorziehen, keine 2500-Zeilen-Datei zu haben, aber soweit ich das beurteilen kann, können Sie include nicht verwenden, um eine Klasse in mehrere Dateien aufzuteilen. Theoretisch könnte ich die Funktionen in verschiedenen Klassen gruppieren, aber sie sind eng genug miteinander verwandt, so dass ich das Gefühl habe, dass sie zusammengehören. Wenn Sie sie aufteilen, wird sich der Nutzen verringern, den ich mir erhoffe, wenn ich mich von einem prozeduralen Ansatz verabschiede (mit gemeinsamen Eigenschaften, anstatt einer Reihe von Parametern, die in fast jeder Funktion enthalten sind).

Ich weiß, das ist ein bisschen vage, aber irgendwelche Vorschläge / Hinweise? Wenn es darauf ankommt, handelt es sich um einen Prototyp, sodass die einfache Codeverwaltung Vorrang vor Sicherheit und Leistung hat.

AKTUALISIEREN: Lassen Sie mich sehen, ob ich etwas von der Unbestimmtheit entfernen kann:

Diese Klasse / dieser Satz von Funktionen gibt den HTML-Code für ein komplexes Formular aus. Es gibt viele verschiedene Abschnitte und Variationen innerhalb jedes Abschnitts, abhängig von ungefähr 5 oder 6 Parametern, die gegenwärtig in die Funktionen übergeben werden. Ich hatte gehofft, die Parameter einmal als Eigenschaften der Klasse zu definieren und dann von allen Abschnittserstellungsmethoden aus darauf zugreifen zu können. Wenn ich Unterklassen verwende, werden die Werte dieser Eigenschaften nicht richtig 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 schauen, ob es einen Grund gibt, der nicht funktioniert.)

Ich habe momentan 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 stellte ich mir anfangs so etwas vor:

class MyForm {
    public $type;          // or maybe they'd be private or 
    public $mode;          // I'd use getters and setters 
    public $read_only;     // let's not get distracted by that :)
    public $values_array;
    // etc.

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

    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() {}
    // etc. for 2500 lines
}

Jetzt denke ich etwas wie:

// container class file
class MyForm {
    static $type 
    static $mode
    static $read_only
    static $values_array
    // etc.

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

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

// section A file
class SectionA extends MyForm {
    function __constructor() { 
        if (MyForm::$type == 'foo') { }
        else { }
    }

    function __toString() {
        // return string representation of section
    }
}

// etc.

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

Irgendwelche anderen Ideen / Ansätze?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage