Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Remove final keyword * Added changelog * Added docs to final * Update doc/final.md Co-authored-by: Martijn van der Ven <martijn@vanderven.se> * Added link to decorator pattern Co-authored-by: Martijn van der Ven <martijn@vanderven.se>
- Loading branch information
Showing
10 changed files
with
50 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
# Final classes | ||
|
||
The `final` keyword was removed in version 1.4.0. It was replaced by `@final` annotation. | ||
This was done due popular demand, not because it is a good technical reason to | ||
extend the classes. | ||
|
||
This document will show the correct way to work with PSR-7 classes. The "correct way" | ||
refers to best practices and good software design. I strongly believe that one should | ||
be aware of how a problem *should* be solved, however, it is not needed to always | ||
implement that solution. | ||
|
||
## Extending classes | ||
|
||
You should never extend the classes, you should rather use composition or implement | ||
the interface yourself. Please refer to the [decorator pattern](https://refactoring.guru/design-patterns/decorator). | ||
|
||
## Mocking classes | ||
|
||
The PSR-7 classes are all value objects and they can be used without mocking. If | ||
one really needs to create a special scenario, one can mock the interface instead. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters