Accept PDO as a Connection constructor argument #4948
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This patch is a step towards sunsetting
Connection::getWrappedConnection()
. This method is not part of the driver API, so wrapping a driver connection into a decorator will make this method inaccessible. This is likely already a problem when the Portability middleware is used (#4157) and will become more obvious when the Logging middleware has been introduced (#4941).Instead of instantiating PDO, the driver connection constructor will now accept it as a dependency. It has the following advantages:
pdo_pgsql
andpdo_sqlite
drivers will no longer break their connection encapsulation by callingConnection::getWrappedConnection()
in order to access the underlying PDO instance.The general idea here is that every driver-level component should accept and wrap its lower-level counterpart, not instantiate it. This will allow for a more clear separation of concerns and, eventually, a cleaner internal API.
A similar change was applied recently in #4894.