Magic Getter auf Varien_Object
(M1) und DataObject
(M2) sind gängige Praxis, aber mit Magento 2 fühlt es sich falsch an, es zu verwenden.
Gut:
- leicht zu lesen / schreiben
Schlecht
- Dies führt zu Problemen bei der Verwendung von Ziffern in Schlüsseln (siehe: Magento 2: Anderer Weg zum Abrufen eines Felds einer Sammlung oder Attribut "Benutzerdefiniertes Produkt abrufen" mit Kamelkasten ).
- Tools zur Code-Analyse beschweren sich über nicht vorhandene Methoden
Frage
Mit Magento 2 haben wir zwei neue Methoden:
getDataByKey($key)
getDataByPath($path)
Gibt es noch einen guten Grund für den Einsatz getData($key)
oder irgendwelche Zauberkünstler?
Bearbeiten:
@ Vinai danke. Ich habe die @method
Methode nicht erwähnt , weil mein Ansatz ganz anders war.
Es hilft nur der IDE, hat aber keinen Einfluss auf andere Dinge.
Es gibt mehrere mergedf PRs auf, die „Mikro-Optimierungen“ wie Gießen (int)
statt intval()
oder Array - Größe außerhalb Schleifen (auch für kleine Arrays) erhalten.
Auf der anderen Seite gibt es
magische Getter, die etwas "Overhead" haben, wie Marius es beschrieben hat ....
strtolower(trim(preg_replace('/([A-Z]|[0-9]+)/', "_$1", $name), '_'));
getData($key)
Mehtods müssen auch 2-3 zusätzliche Prüfungen ...if ('' === $key) {
if (strpos($key, '/')) {
if ($index !== null) {
Für eigenen Code ist es völlig einverstanden, echte Methoden zu bevorzugen, aber in den gleichen Fällen ist dies möglicherweise nicht der Fall ... Sie haben z. B. ein benutzerdefiniertes Ereignis erstellt ...
$value = $observer->getVar_1();
$value = $observer->getData('var_1');
$value = $observer->getDataByKey('var_1');
3. mit /** @var some $value */
scheinen mir am besten. (?)