Modul Abwärtskompatibilität sicherstellen?

Hallo :slight_smile:

es kommt immer wieder vor das bei neuen OXID Versionen ganze Klassen oder Methode(n) wegfallen.

Damit ein Modul dann noch abwärtskompatibel bleibt, muss man sich auf die unterschiedlichen Fälle einstellen und anders handhaben. Aber was benutzt ihr als Unterscheidungsmerkmal um welche OXID Shop Version es sich handelt?

Dort gibt es z.B. die Methode getVersion(), aber diese kann man leider als Unterscheidungsmerkmal seit der OXID Version 4.9.0 nicht mehr benutzen. Da diese unterschiedlich aufgerufen wird.


oxRegistry::getConfig()->getVersion() (Neu)
oxConfig::getInstance()->getVersion() (Alt)

Viele Grüße
indianer3c

Verdammt gute Frage… Kannst Du die bitte in Englisch nochmal in die dev-general schicken?

Gruß

Hallo Marco,

ist der “dev-general” ein E-Mail-Verteiler? Kannst du mir sagen wie ich den finde?

Ich bin am überlegen, an der bootstrap.php Datei (welche es ab OXID 4.7.x gibt) festzumachen wie ich die Methode getVersion() aufrufe?

Viele Grüße
indianer3c

Oh, Du warst noch gar nicht drin?

Gruß

Kann man nicht einfach machen:

if(class_exists(‘oxregistry’)) {
$sVersion = oxRegistry::getConfig()->getVersion();
}
else {
$sVersion = oxConfig::getInstance()->getVersion();
}

Man schaut also einfach vorher ob es oxRegistry gibt.

Hallo ldierks,

leider nicht, weil z.B. das PayPal Standalone Modul die Klasse oxRegistry auch in alten OXID Versionen einführt. Dies kann dann dazu führen, dass das Modul nicht wie erwartet funktioniert.

Viele Grüße
indianer3c

Ich reiche das hier mal kommentarlos ein:

	public function getInstanceOrRegistry($sObjType) {
			
		if(
			method_exists($sObjType, 'getInstance')
		) 
		{
			return call_user_func(array($sObjType, 'getInstance'));
		
		} else {
			
			return oxRegistry::get( $sObjType ); 
			
		}
			
	}


	$myClass->getInstanceOrRegistry("oxConfig")->getVersion();



danke schön :slight_smile: