如何简化 PHP class

How to simplify a PHP class

我目前正在开发一个会计程序,其中为多个操作(报价、订单确认、送货单等)创建了不同的 PDF。我为此创建了一个 class“PDF”并创建了一个public 每个操作函数。要创建送货单,我执行以下操作:

$PDF = new PDF();
$PDF->createDeliveryNote();

但是,我现在遇到一个问题,class 逐渐变得混乱。每个函数大约有 200 行,class 总共有 2000 行。我现在的问题是:如何让我的 PDF class 更清晰?

对于这种情况,我会使用 Strategy 设计模式 https://designpatternsphp.readthedocs.io/en/latest/Behavioral/Strategy/README.html

类似于:

interface PdfOperationInterface
{
    public function create()
}

class OrderPdfOperation implement PdfOperationInterface
{
    public function create()
    {
       // order logic
    }
}

class OfferPdfOperation implement PdfOperationInterface
{
    public function create()
    {
       // offer logic
    }
}

使用handler或者以某种方式只要能得到预期的操作实例,比如使用Factory或者Pool of operations

class PdfOperationHandler
{
    private $operation;
    
   
    public function __construct(PdfOperationInterface $operation) {
        $this->operation = $operation;    
    }
    
    public function operate()
    {
        $this-operation->create();
    }
}

用法:

$hander = new PdfOperationHandler(new OfferPdfOperation());

$hander->operate();