Pregunta

Veo un poco de información en conflicto en el Internet y en los módulos 3 ª parte por igual - es un requisito o mejores prácticas a $this retorno al final de un método de observador

por ejemplo:.

MyCompany_Module_Model_Observer.php

public function salesOrderSaveAfter($observer){
    //do stuff
    return $this;
}
¿Fue útil?

Solución

El núcleo siempre return $this; en el contexto de los métodos de observador -. Pero en realidad no parece ser una razón para ello

Rastreo de vuelta a través dispatchEvent() encontrará el método principal de que los métodos de observación (llamadas en ./app/Core/Model/App.php)

protected function _callObserverMethod($object, $method, $observer)
{
    if (method_exists($object, $method)) {
        $object->$method($observer);
    } elseif (Mage::getIsDeveloperMode()) {
        Mage::throwException('Method "'.$method.'" is not defined in "'.get_class($object).'"');
    }
    return $this;
}

Sin embargo, en ningún momento el valor de retorno es en realidad nunca usado o referenciado a ser pasado a otro observador en la cadena.

Tal vez Magento estaban pensando a largo plazo para usarlo como algunos medios para retener / pasar datos dentro instancia de clase $this fuera de la utilización de sesiones / registro; o podría haber sido el código heredado que acaba de atascado .

No se puede ver una razón de peso para return $this -. Pero dicho, si lo hacen en el núcleo, que es lo que hacemos

Como regla general, cualquiera que sea el núcleo hace - que consideramos las mejores prácticas. Con la excepción de las faltas de ortografía impactante )

Otros consejos

$ este (nunca mejor dicho) se llama una interfaz fluida. Se le permite llamar a varios métodos dentro de un objeto sin tener referirse a una variable definida.

Es sólo una convención Magento para siempre vuelven $this en lugar de void (nada) si un método no tiene otro valor de retorno, independientemente de que esté siendo utilizada para una interfaz fluida en cualquier lugar o no.

La ventaja es, que no necesita pensar acerca de si es útil o no, y una interfaz fluida superfluo es mejor que una falta. Además, Magento fuerza empezar a usarlas para los observadores, aunque esto es muy poco probable.

Algunos años más tarde ...:)

El núcleo siempre devuelven $ presente; en el contexto de los métodos de observador - [...]

o

Es sólo una convención Magento para volver siempre $ esto en vez de vacío (nada) si un método no tiene otro valor de retorno [...]

No, en serio. Acaba de comprobar algunos observadores en 1.9.3.x y muchos no retorno (void). Así que no es muy claro "lo que hace código del núcleo";)

he utilizado en mi código $return $this; también, pero hoy en día - no habrá cambios en el código M1 - Me dejo. Creo - si leo código de otros - un método void es más claro, entonces, uno con una return $this añadido a ciegas, que no se usa nunca

.

Editar

Si se utiliza Aoe_Scheduler también puede devolver un string o array para mostrarla en la historia de cron.

introducir descripción de la imagen aquí

No se encuentra ninguna documentación de las características de este ... código relacionado aquí: https://github.com/AOEpeople/Aoe_Scheduler/blob/master/app/code/community/Aoe/Scheduler/Model/Schedule.php#L229 -L259

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top