Wenn aus @deprecated Ernst wird – am Beispiel von TYPO3 v6.0

Framework-Entwickler fassen immer wieder den Entschluß, dass die eine oder andere Funktion im Quelltext durch eine andere, bessere Funktion ersetzt werden muss und somit die bisherige Funktion „verfällt“. Da u.U. viele Entwickler diese Funktion aktiv nutzen, wird sie i.d.R. zunächst als „deprecated“ markiert und funktioniert einen gewissen Zeitraum weiterhin.

Klingt erstmal nicht unlogisch.

Oft werden Meldungen eingebaut, die dem einzelnen Entwickler sagen, dass eine bestimmte Funktion nicht mehr verwendet werden sollte. Das passiert natürlich nur, wenn der Extension-Entwickler seine Applikation das nächste Mal mit dem neuen Framework testet. Doch was, wenn er selbst daran kein großes Interesse hat oder darauf wartet bis sich jemand meldet? Wo die Anzahl der verfügbaren Erweiterungen ja ein wichtiges Marketing-Instrument ist …

Da von TYPO3 v4.6 bis v6.0 eine, wie ich finde, beispiellose Anzahl an Funktion entfernt wurde und werden wird, habe ich mich gefragt, welche Extensions dann überhaupt noch (ohne Update) lauffähig sein werden. Ein Script soll Aufschluß geben.

Die Idee ist einfach:

  1. finde alle @deprecate Markierungen und die passenden Funktions-/Klassennamen im Quellcode des Frameworks
  2. Durchsuche die Quellcode-Dateien der Extension(s) nach diesen Funktions-/Klassennamen
/**
* Forces the integer $theInt into the boundaries of $min and $max. If the $theInt is 'FALSE' then the $zeroValue is applied.
*
* @param integer $theInt Input value
* @param integer $min Lower limit
* @param integer $max Higher limit
* @param integer $zeroValue Default value if input is FALSE.
* @return integer The input value forced into the boundaries of $min and $max
* @deprecated since TYPO3 4.6, will be removed in TYPO3 4.8 - Use t3lib_utility_Math::forceIntegerInRange() instead
*/
public static function intInRange($theInt, $min, $max = 2000000000, $zeroValue = 0) {
  self::logDeprecatedFunction();
  return t3lib_utility_Math::forceIntegerInRange($theInt, $min, $max, $zeroValue);
}

Auszug aus typo3_src-4.7.2/t3lib/class.t3lib_div.php

Den Quellcode des deprecationCheck habe ich bei github veröffentlicht. Der Ansatz müsste bei jeder Code-Basis funktionieren. Dass ein so knappes PHP-Script keine 100% Treffer-Quote hat, sollte auf der Hand liegen. Es ist aber dennoch eine große Hilfe – ggf um als Framework-Entwickler abzuschätzen, welche Auswirkung das entfernen einer Funktion haben würde.

Add Comment

Required fields are marked *. Your email address will not be published.