Der offensichtliche Grund, ein Umschreiben anstelle eines Plugins zu verwenden, ist, wenn Sie eine private, geschützte oder endgültige Methode überschreiben müssen .
Beachten Sie aber auch die folgenden Szenarien.
1. Szenario (absolute Sortierreihenfolge):
Rewrites können nützlich sein, wenn Sie Ihren Code vor Plugins ausführen müssen . Ich weiß, dass Sie dies tun können, indem Sie das Plugin einstellen sortOrder
, aber Sie können nicht sicher sein, dass Ihr Code immer der erste ist, wenn jemand (nicht Sie) Komponenten von Drittanbietern installiert.
2. Szenario (Code ausschließen):
Wenn Sie nur einen Teil des Codes in einer Methode ausschließen oder neu schreiben müssen , ist ein Plugin möglicherweise nicht optimal. Ich weiß, Sie können ein around
Plugin verwenden und den Aufruf des vermeiden proceed
, aber dies könnte andere Plugins im Stack beschädigen.
3. Szenario (Codestil):
Sie sollten Schreibungen verwenden , wenn Sie benötigen zu umschreiben ein Verhalten, Plugins sollte verwendet werden , die Ausgabe zu modifizieren oder Ausführen von Code vor / nach.
Ein Plugin sollte immer den Originalcode ausführen , um zu vermeiden, dass andere Module beschädigt werden.
Meine Schlussfolgerung:
Wenn Sie eine Kernmethode als Black Box mit einer Eingabe und einer Ausgabe betrachten und sich nicht mit den internen Mechanismen auskennen, ist ein Plug-in die beste Option.
Wenn Sie ein internes Verhalten ändern müssen , ist ein Umschreiben möglicherweise die beste Option.