Avoid using $GLOBALS['TYPO3_DB'] in DataHandler
Instead of $GLOBALS['TYPO3_DB'] a type hinted property $this->databaseConnection should be used to gain autocompletion and better IDE inspection in this class.
Concerns: This might be a breaking change. $this->databaseConnection is set on DataHandler->start(). If some code relies on setting/modifying $GLOBALS['TYPO3_DB'] after DataHandler->start() and before other methods of DataHandler are invoked it might break. Please decide if this is too much of a risk.
Updated by Mathias Schreiber over 6 years ago
Absolutely not too risky:
Here's some info on this kind of cleanups:
- Please use imports on top of the class
- Please supply constructor injection as long as it makes sense (*)
- Please supply a meaningful comment on the property
The thing with "where is makes sense".
Your constructor might get a little big over time.
Helmut and I came up with the plan that 3-4 parameters are fine within the constructor DI.
If you should need more than that and have no clue how to deal with it, ping the #typo3-cms channel on slack and we'll find a solution.
These cleanups are a lot more important than you might think.
For starters, they supply code completion in an IDE.
In PHPStorm in particular, it makes even more sense, because all calls to $GLOBALS[SOMETHING] are marked as a warning.
While the warning in itself isn't an issue, the amount of warnings results in a sort of "I don't care" mentality and "real" warnings simply get lost.
So, by all means... YES, PLEASE! Keep fixes like these coming :)