在 Magento 2 中使用它的任何方法之前,我是否总是必须先注入所有依赖项?

Do I always have to inject all the dependencies first before using any of its methods in Magento 2?

我是 Magento 2 的新手。如您所知,在 Magento 1 中,我们可以更轻松地调用其他 class(es) 的任何方法,这要感谢 Mage::

在 Magento 2 中,我注意到每次我想使用其他 class(es) 的方法时,我必须先注入依赖项,这可以使构造函数看起来非常注射了这么多次。我读到我们可以使用对象管理器,但这并不可取。不知道为什么。

对我来说,使用依赖项而不是对象管理器的最明显优势是,您可以在 class 的任何地方利用它。使用对象管理器,您必须单独调用每个函数的方法。起初这似乎是一种更实用的方法,但如果代码更复杂,您的函数就会膨胀,因为您总是必须引用对象管理器,而不是直接通过依赖项引用方法。我宁愿在顶部有一个 "big block of construction" 而不是我的函数中的所有这些对象管理器实例。

此外,正确使用对象管理器可能非常棘手。也许看看这个: https://magento.stackexchange.com/questions/117098/magento-2-to-use-or-not-to-use-the-objectmanager-directly