2015-09-04 103 views
0

我已經得到越來越大的config.class文件。 其結構是這樣的:分裂類文件

class config 
{ 
    public $myConfig = 20; 
    .... 

    public __construct() { 
     $this->set_config_topics(); 
     .... 
    } 

    private function set_config_topics() { 
     $this->bum='gg'; 
     .... 
    } 
} 

我想是配置類分成幾個配置文件(模塊配置)。 我可以擴展課程,但我不想得到奇怪的鏈。 我想要這樣的:

class config 
{ 
    private config_files=array(
     'config.topics.php', 
     'config.second.module.php', 
     ... 
    ); 

    public __construct() { 
     //require all config_files and attach them as class' variables 
    } 
} 

如何做到這一點?

+0

如果將有太多的配置,它需要管理多個文件,是不是會有更好的數據庫配置文件,然後在啓動時從數據庫加載任何其他配置,或者將它們作爲需要?這樣,如果您創建配置並忘記將文件添加到配置類中,則值將從數據庫加載並且不會錯過。 – gabe3886

回答

2

如果您使用的是較新版本的PHP(5.4+),則可以使用traits

trait ConfigTopics { 
    protected function set_config_topics() { 
     // ... 
    } 
} 

class config { 
    use ConfigTopics; 

    public __construct() { 
     $this->set_config_topics(); 
    } 
} 

一些注意事項:

  • 如果你繼承非公開方式,他們應該是protected而非private。這是因爲private方法只能從實際定義的類/特徵訪問,但protected方法也可以被所有子類使用。
  • 特性對於在多個不同的類之間共享通用代碼/功能很有用。如果這些函數都不在你的配置類之外使用,那麼我真的不會把它們分開。而是嘗試支持代碼摺疊的編輯器,或類似的東西。
  • 你也可以擴展一個類(即一個子類)。儘管如此,你只能擴展一個類,所以特徵是一種多功能繼承。