Selaa lähdekoodia

Add a deprecation log error for extensions (#3335)

Extensions must override some parent methods. The rule is just a
guideline because only described in comments. The idea is to
deprecate that flexibility and add it to the code. To warn users
beforehand, we log error message regarding incomplete extensions.

See #3333
Alexis Degrugillier 5 vuotta sitten
vanhempi
commit
9aa3c03844
1 muutettua tiedostoa jossa 8 lisäystä ja 0 poistoa
  1. 8 0
      lib/Minz/ExtensionManager.php

+ 8 - 0
lib/Minz/ExtensionManager.php

@@ -172,6 +172,14 @@ class Minz_ExtensionManager {
 			                  '` is not an instance of `Minz_Extension`');
 			                  '` is not an instance of `Minz_Extension`');
 			return null;
 			return null;
 		}
 		}
+		$reflector = new ReflectionClass($extension);
+		$className = $reflector->getName();
+		if ('Minz_Extension' === $reflector->getMethod('handleConfigureAction')->class ||
+			'Minz_Extension' === $reflector->getMethod('install')->class ||
+			'Minz_Extension' === $reflector->getMethod('init')->class ||
+			'Minz_Extension' === $reflector->getMethod('uninstall')->class) {
+			Minz_Log::error("The '{$className}' extension class definition is deprecated. It will continue to work with the current version but will break in the future. The '{$className}' extension class needs to override the 'handleConfigurationAction' method, the 'install' method, the 'init' method, and the 'uninstall' method to work properly.");
+		}
 
 
 		return $extension;
 		return $extension;
 	}
 	}