Add ComparableData trait with equalTo() method for value comparison #999
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 PR adds a new ComparableData trait and interface that provides an equalTo() method to compare data objects by their values rather than their instances.
Why?
PHP's default object comparison operator
==
only checks if two objects are the same instance. This limitation becomes particularly problematic when data objects contain special properties likeOptional
attributes.This new
equalTo()
method allows comparing data objects based on their values by comparing the result of theirtoArray()
methods, which correctly handles nested objects, collections, and special types likeOptional
.Usage Example
This method is especially useful in testing scenarios or when comparing objects from different sources, including comparing objects with nested data structures or optional properties.