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?