2016-03-29 9 views
0

Ich habe eine OO Architekturmuster Frage. Ich glaube, ich habe einen Fehler in der Architektur gemacht, aber ich habe nicht die Zeit, komplett zu refaktorisieren und "do-it-right".So verweisen Sie auf eine neue Klasse, ohne die Referenzen in PHP zu ändern

So geht das: In einem bestehenden PHP-System habe ich "neue Myclass" und "if ($ class instanceof Myclass)" überall. Jetzt finde ich, dass ich eine neue Version von Myclass möchte, aber ich habe nicht die Bandbreite, um alle vorhandenen Verweise auf Myclass zu ändern und zu testen.

Also frage ich mich, ob es ein Muster gibt, verfügbar in PHP, dass ich meine Referenzen immer noch auf Myclass behalten und etwas so tun kann, dass es auf MyclassV2 verweist, ohne jede Referenz zu ändern.

Vorzugsweise sollte ich in der Lage sein, entweder die neue oder die alte Version zu instanziieren.

Ich habe nichts dagegen, Myclass zu ändern und/oder neue Klassen nach Bedarf hinzuzufügen.

+0

Implement 'interface' –

+0

Vielen Dank für Ihre Antwort, obwohl ich nicht sicher bin, wie eine Schnittstelle, die ich in der Regel Enforcer sehen die Interface-Methoden erfordern meine Frage zu existieren, adressiert. – sdfor

+0

Implementieren diese Klassen die gleichen Methoden oder nicht? – Devon

Antwort

0

Einfach erweitern Myclass.

class MyclassV2 extends Myclass {} 

$MyclassV2 = new MyclassV2(); 
var_dump($MyclassV2 instanceof Myclass); // true 
+0

und dann müsste ich alle Referenzen im System von Myclass zu Myclass2 ändern. Ich habe versucht, das zu vermeiden. – sdfor

+0

können Sie 'Myclass' behalten. Oben habe ich ein Beispiel gemacht, was ist das Problem? was meinst du, wenn du über die "Referenz" redest? – Federkun

Verwandte Themen