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.
Summary of Changes
The package currently ships abstract classes that aren't largely useful on their own and forces a structure where all models are stateful. I propose to restructure things a bit.
First, I introduce two new interfaces,
DatabaseModelInterface
andStatefulModelInterface
which define models which are aware of our database driver or hold a state. These interfaces only define getters for their data sources.Second, I have deprecated the existing
ModelInterface
, models should implement the interfaces they need if desired. The setter for the state remains in this deprecated interface.Third, I have deprecated the abstract classes. They don't provide anything useful on their own.
Fourth, I have created traits for the new interfaces which defines an implementation for the getters, a class property for the data, and setters for optional dependency injection not using a constructor.
The end result is the 2.0 package will only contain the two new interfaces and the traits.