Ben bir sınıfa taşımak istediğiniz fonksiyonları bir sürü var. Onlar şu anda oldukça uzun dosyaların bir çift bölünmüş demektir. Ben bir 2500 satır dosya tercih ediyorum, ama bildiğim kadarıyla söyleyebilirim, birden fazla dosya içine bir sınıf bölmek dahil kullanamazsınız. Teoride, ben grup farklı sınıflar işlevleri olabilir, ama bunlar yakından onlar birbirine ait gibi hissediyorum yeterince ilgili konum ve bölme onları uzak bir usul yaklaşımdan hareket almak için umuyorum yarar bazı azaltacak (yerine neredeyse her fonksiyonu olan parametrelerin bir demet daha ortak özelliklere sahip).
Bu biraz belirsiz olduğunu biliyorum, ama herhangi bir öneri / işaretçiler? Bu konularda, bu bir prototip için, yani kod yönetim kolaylığı, güvenlik ve performans önceliklidir.
UPDATE: Ben belirsizlik bazı kaldırabilirsiniz bakayım:
Fonksiyonları bu sınıf / set karmaşık bir form için html çıktılar. Şu fonksiyonları içine geçirilir, yaklaşık 5 veya 6 parametrelerine bağlı olarak, her bölüm içinde bir çok farklı bölümleri ve varyasyonları vardır. Ben sınıfın özellikleri olarak bir kez parametrelerini tanımlamak ve sonra bölüm oluşturma yöntemleri içindeki bütün onlara erişmek için umuyordum. Ben alt sınıfları kullanıyorsanız, bu özelliklerin değerleri bir sınıf dolayısıyla arzusu, düzgün başlatılmamış olmayacaktır. (Hmm. .. Ben statik onları tanımlamak sürece. Ben olabilir sadece kendi sorusunu yanıtladı. Ben işe yaramaz herhangi bir neden olup olmadığını görmek için bakmak gerekir.)
Şu anda gibi fonksiyonları bir karmaşa var:
get_section_A ($type='foo', $mode='bar', $read_only=false, $values_array=array()) {
if ($this->type == 'foo') { }
else ($this->type == 'foo') { }
}
Yani başlangıçta hayal gibi bir şey oldu:
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
}
Şimdi şöyle bir şey düşünüyorum:
// 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.
Ya da muhtemelen özelliklerini yaşamak FormSection soyut bir sınıf gerekir.
Diğer fikirler / yaklaşımlar?