如何在php中重构增长类?

时间:2017-02-01 15:37:36

标签: php oop refactoring

我的课程正在逐渐增加。它是执行db,blob,文件操作等框架的引擎。

该类被大量使用来自不同的组件,我不想将monolithe重构为子类,因为它周围的代码太多会破坏。

我可以和

一起生活
class engine {
  include 'core/db.php';
  include 'core/blob.php';
  include 'core/profiler.php';

  function __construct($config..) {
  }
}

包含核心/ db.php,包含

中的方法
<?php
function dbPrepare($sql,$args) {
  ...
} 
...

我可以接受结果,但是PHP不会让我投入一个包含它需要函数的包含。

任何解决方案? (我已经触及了让引擎根据子组件的变化重建自己但放弃了混乱的想法。)

enter image description here

1 个答案:

答案 0 :(得分:1)

使用traits汇集您的课程。基本上你每个文件都声明一个特征

<强>芯/ db.php中

trait Db
{
    public function dbPrepare($sql, $args)
    {
        // ...
    }

    public function dbSomethingElse() 
    {
        // ...
    }
}

<强>芯/ blob.php

trait Blob
{
    public function blobMeBabyOneMoreTime()
    {
        // ...
    }
}

然后将它们组装在主文件中( engine.php

require 'core/db.php';
require 'core/blob.php';

class engine {
    use Db;
    use Blob;
}

PS:你应该研究自动加载和名称空间,避免手动包含文件。