Как упростить класс PHP - PullRequest
       102

Как упростить класс PHP

0 голосов
/ 02 августа 2020
• 1000 * функция для каждой операции. Чтобы создать уведомление о доставке, я делаю следующее:
$PDF = new PDF();
$PDF->createDeliveryNote();

Однако теперь я сталкиваюсь с проблемой, когда класс постепенно становится запутанным. Каждая функция имеет около 200 строк, а в классе всего 2000. Мой вопрос: как мне сделать мой класс PDF более понятным?

1 Ответ

2 голосов
/ 02 августа 2020

Я бы использовал шаблон проектирования 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
    }
}

обработчик использования или как-то до тех пор, пока можно получить ожидаемый экземпляр операции, например use Factory или Pool of operations et c

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();

...