2017-02-01 59 views
0

我有一個班正在增長過去的概述。它是執行db,blob,文件操作等的框架的引擎。如何重構生長類在PHP?

這個類被不同的組件大量使用,我不想將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

+0

究竟是什麼問題? –

+0

@AlexBlex類只傳遞了1500行。它變得笨拙。 – Teson

+0

你可以使用特質。它不會讓它變得更可怕。改爲重構。 – ShiraNai7

回答

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:你應該看看自動加載和命名空間,並避免手動包含文件。

+0

結果非常好。略有特性的錯誤使用,但非常好的代碼概述。 – Teson

+0

恭喜。很高興它工作出來了! – motanelu