拆分类文件

时间:2015-09-04 13:21:12

标签: php

我有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
    }
}

怎么做?

1 个答案:

答案 0 :(得分:3)

如果您使用的是较新版本的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方法。
  • 特征对于在多个不同类之间共享公共代码/功能非常有用。如果在配置类之外没有使用这些函数,那么我真的不会把它们分开。而是尝试一个支持代码折叠的编辑器,或类似的东西。
  • 您还可以扩展一个类(即一个子类)。但是,您只能扩展一个类,因此traits是一种功能的多重继承。