In den meisten Konstruktoren der Klasse wird ein Context-Objekt übergeben. Ich konnte nicht verstehen, wie dieses Kontextobjekt funktioniert. Mir ist auch aufgefallen, dass dies manchmal an den Konstruktor der übergeordneten Klasse übergeben wird, wie unten dargestellt.
public function __construct(
\Magento\Framework\App\Action\Context $context,
\Magento\Catalog\Model\Design $catalogDesign,
\Magento\Catalog\Model\Session $catalogSession,
....
parent::__construct(
$context,
$layoutFactory,
Können Sie bitte erklären, wie dieses spezielle Kontextobjekt funktioniert?
quelle
$context
?Es wurden Kontextobjekte eingeführt, um Entwickler von Drittanbietern von Änderungen in Konstruktoren abstrakter Klassen zu isolieren.
In Magento 1 Abstract wurden Klassen mit viel "Helfer" -Verhalten als praktische API für Class Extender angesehen. Dies verursachte große Anzahl von Methoden und impliziten Abhängigkeiten in abstrakten Klassen (
AbstractModel
,AbstractBlock
,AbstractAction
)In Magento 2 wird von vererbungsbasierten APIs (genauer gesagt SPIs) abgeraten, es gibt jedoch noch viele ältere APIs. Ursprünglich wollten wir schrittweise zusätzliches Verhalten aus abstrakten Klassen entfernen. Um nicht alle Extender zu unterbrechen, wenn wir eine Abhängigkeit vom Konstruktor entfernen würden, haben wir Context-Objekte eingeführt.
Derzeit ist geplant, vererbungsbasierte APIs mit schnittstellenbasierten APIs irgendwann aufzugeben.
quelle