стратегии для управления файлами длинных классов в php

У меня есть куча функций, которые я хочу перенести в класс. В настоящее время они разбиты на пару довольно длинных файлов. Я бы предпочел не иметь один 2500-строчный файл, но, насколько я могу судить, вы не можете использовать include, чтобы разбить класс на несколько файлов. Теоретически, я мог бы сгруппировать функции по разным классам, но они достаточно тесно связаны, так что я чувствую, что они принадлежат друг другу, и их разделение уменьшит некоторую полезность, которую я надеюсь получить от отказа от процедурного подхода. (с общими свойствами, а не набором параметров, которые есть почти в каждой функции, ион).

Я знаю, что это немного расплывчато, но какие-либо предложения / указатели? Если это имеет значение, то это для прототипа, поэтому простота управления кодом имеет приоритет над безопасностью и производительностью.

ОБНОВИТЬПозвольте мне посмотреть, смогу ли я убрать некоторую неопределенность:

Этот класс / набор функций выводит html для сложной формы. В каждом разделе есть много различных разделов и вариантов, в зависимости от примерно 5 или 6 параметров, которые в настоящее время передаются в функции. Я надеялся определить параметры один раз как свойства класса, а затем получить доступ к ним из всех методов создания раздела. Если я использую подклассы, значения этих свойств не будут инициализированы должным образом, отсюда и желание одного класса. (Хм ... если я не определю их как статические. Возможно, я только что ответил на свой вопрос. Мне придется посмотреть, есть ли причина, которая не сработает.)

В настоящее время у меня есть беспорядок функций, таких как:

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

Поэтому я изначально представлял что-то вроде:

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
}

Теперь я думаю что-то вроде:

// 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.

Или, возможно, мне нужен абстрактный класс FormSection, где живут свойства.

Любые другие идеи / подходы?

Ответы на вопрос(6)

Ваш ответ на вопрос