Magento:避免扩展冲突的最佳方法

标签 magento

创建 Magento 扩展时避免与加载到商店的其他扩展发生冲突的最佳实践是什么。我知道如何使用覆盖方法、观察者方法进行编码,以及如何以首选方式进行编码的详细信息。但这仍然无法阻止您与其他模块发生冲突并进行升级。

Alan Storm,如果您阅读了本文,我也阅读了您最近关于覆盖和可升级性的文章。对于这种情况,这也是最好的思考方式吗?我还看到人们创建的扩展和文章,以允许多个类扩展同一个类。

最佳答案

避免此问题的最佳方法是尽可能使用 Magento 内置的观察者模式。它的位置还不够,但是当您有选择时,使用它将使您即使与其他表现不佳的扩展一起也能很好地发挥作用。

接下来,尝试覆盖最小类数。这听起来很明显,但有时我认为有必要重写每一个运输计算器类(代码很简单,但需要重复)。经过更多的工作,我能够覆盖单个类,并为自己节省一些启动维护的麻烦。

当您这样做时,您仍然可能会遇到与覆盖相同类的其他扩展的冲突。不幸的是,这在 Magento 中还没有解决,除了联系相关人员并制定解决方案之外,没有什么好的方法可以解决它。

最后,对于可升级性问题,我在人们的代码中看到的一个常见问题是,他们在没有必要的情况下不假思索地覆盖了整个函数。所以你得到这个:

function doSomethingUseful() {
    // ...100 lines of parent code...
    unset($result['badKey']);
    // ...100 lines of parent code...

    return $result;
}

当您升级站点时,多出 200 行代码可能会导致错误。艰难时期!相反,像这样的东西通常有效(并且是一个简单的改进):

function doSomethingUseful() {
    $result = parent::doSomethingUseful();
    unset($result['badKey']);
    return $result;
}

它更快,更具可读性,更不容易出错,每个人都赢了!

希望有帮助!

谢谢, 乔

关于Magento:避免扩展冲突的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3729728/

相关文章:

php - 如何在 magento 中按产品名称获取所有产品集合顺序?

magento - magento 购物车页面中的 Paypal 付款标准?

linux - 如何为 Docker 容器提供更多资源

php - Magento - 检查 cms 页面

php - 购物车价格规则的类层次结构

magento - 如何以编程方式在 magento 中为产品分配类别

xml - Magento - 使用 local.xml 从产品 View 中删除选项卡

Magento:根据 session 变量隐藏自定义模块 block

php - magento升级后出现MySQL错误

mysql - PDOException SQLSTATE HY000 2002 无法通过套接字 '/var/run/mysqld/mysqld.sock' 连接到本地 MySQL 服务器 (2)