3

我正在按照最佳实践(最好在此处描述)开发 Magento 2 CRUD 功能。在我正在进行的项目中,我们使用的是 PHPMD(php mess detection)。在其他规则中,我们将 CBO 限制设置为 13(我理解这是默认值)。我的存储库正在实现get, save, getList, delete,deleteById方法,并且限制已经是 12。

如果我需要在不重叠 PHPMD CBO 限制的情况下向此存储库添加其他方法,最佳实践是什么?

PS 我认为其他框架/平台中的实现也可能是这种情况,与 Magento 2 不严格相关。

4

1 回答 1

0

这是最重要的规则之一,有助于让您的课程保持专注并且更易于维护。你见过多少次:

class XXXRepository
{
    public function findOneByCode($code);
    public function findOneByParams($params);
    public function findAllByParams($params);
    public function findActive($params);
    public function findForProductList($params);
    ... 5000 lines of spaghetti
}

取而代之的是,拥抱接口,使您的应用程序依赖于抽象,而不是实现细节:

interface ProductByCode
{
    public function findByCode(string $code): ?Product;
}

interface ProductsByName
{
    public function findByName(string $name): array;
}

使用依赖注入组件,您可以将接口别名为其实现。每个接口都去实现。您可以使用一个抽象类,该类将帮助您通过您选择的框架与持久层进行通信。

final class ProductByCodeRepository extends BaseRepository implements ProductByCode
{
    public function findByCode(string $code): ?Product
    {
        return $this->findOneBy(['code' => $code]);
    }
}
于 2019-06-05T19:39:03.670 回答