Domanda

Vedo alcune informazioni contrastanti su internet e in moduli 3rd party allo stesso modo -? Si tratta di un requisito o best practice per $this ritorno alla fine di un metodo osservatore

per esempio:.

MyCompany_Module_Model_Observer.php

public function salesOrderSaveAfter($observer){
    //do stuff
    return $this;
}
È stato utile?

Soluzione

Il nucleo sempre return $this; nel contesto di metodi di osservazione -. Ma in realtà non sembra essere un motivo per esso

Tracing indietro attraverso dispatchEvent() troverete il metodo principale che i metodi di chiamate osservatori (in ./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;
}

Ma in nessun punto è il valore restituito mai effettivamente utilizzato o riferiti a essere passato in un altro osservatore lungo la catena.

Forse Magento stavano pensando più a lungo termine per usarlo come alcuni mezzi per mantenere / passare i dati all'interno di un'istanza della classe $this al di fuori di usare sessioni / Registro di sistema; o avrebbe potuto essere il codice legacy che ha appena bloccato .

non riesco a vedere un motivo valido per return $this -. Ma detto questo, se lo fanno nel nucleo, che è quello che facciamo

Come regola generale, qualunque sia il nucleo fa - che riteniamo migliori pratiche. Con l'eccezione degli errori di ortografia scioccante :)

Altri suggerimenti

$ questo (gioco di parole) è chiamato interfaccia fluida. Esso consente di chiamare più metodi all'interno di un oggetto senza dover fare riferimento di nuovo a una variabile definita.

E 'solo una convenzione Magento per tornare sempre $this invece di void (niente) se un metodo non ha altro valore di ritorno, a prescindere dalla realtà essere utilizzato per un qualsiasi punto interfaccia fluida oppure no.

Il vantaggio è che non c'è bisogno di pensare se è utile o no, e un'interfaccia fluida superfluo è meglio di uno mancante. Inoltre, Magento potrebbe iniziare a utilizzarli per gli osservatori, anche se questo è altamente improbabile.

Alcuni anni più tardi ...:)

Il nucleo tornare sempre $ this; nel contesto di metodi di osservazione - [...]

o

E 'solo una convenzione Magento per tornare sempre $ questo invece di vuoto (niente) se un metodo non ha altro valore di ritorno [...]

No davvero. Appena controllato alcuni osservatori in 1.9.3.x e molti tornano nulla (void). Quindi non è davvero chiaro "ciò che fa codice di base";)

Ho usato $return $this; nel mio codice troppo, ma oggi - non ci saranno cambiamenti nel codice M1 - mi piacerebbe lasciare. Credo che - se leggo il codice altrui - un metodo void è più chiaro, allora uno con un return $this aggiunto alla cieca, che non viene mai utilizzato

.

Modifica

Se si utilizza Aoe_Scheduler si può anche restituire un string o array per visualizzarlo nella storia cron.

entrare descrizione dell'immagine qui

Non è stata trovata nessuna documentazione per questo le caratteristiche ... relativo codice qui: https://github.com/AOEpeople/Aoe_Scheduler/blob/master/app/code/community/Aoe/Scheduler/Model/Schedule.php#L229 -L259

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top