[12.x] Add InteractsWithData::clamp()#58608
Merged
taylorotwell merged 3 commits intolaravel:12.xfrom Feb 4, 2026
Merged
Conversation
Add clamp method to retrieve data clamped between min and max values.
shaedrich
reviewed
Feb 3, 2026
Comment on lines
+293
to
+300
| * @param int|float $max | ||
| * @param int|float $default | ||
| * @return float|int | ||
| */ | ||
| public function clamp($key, $min, $max, $default = 0) | ||
| { | ||
| return Number::clamp($this->data($key, $default), $min, $max); | ||
| } |
Contributor
There was a problem hiding this comment.
Not sure but people might appreciate a shortcut 🤔
Suggested change
| * @param int|float $max | |
| * @param int|float $default | |
| * @return float|int | |
| */ | |
| public function clamp($key, $min, $max, $default = 0) | |
| { | |
| return Number::clamp($this->data($key, $default), $min, $max); | |
| } | |
| * @param int|float|null $max | |
| * @param int|float $default | |
| * @return float|int | |
| */ | |
| public function clamp($key, $min, $max = null, $default = 0) | |
| { | |
| if (func_num_args() === 2) { | |
| $max = $min; | |
| $min = 0; | |
| } | |
| return Number::clamp($this->data($key, $default), $min, $max); | |
| } |
or
Suggested change
| * @param int|float $max | |
| * @param int|float $default | |
| * @return float|int | |
| */ | |
| public function clamp($key, $min, $max, $default = 0) | |
| { | |
| return Number::clamp($this->data($key, $default), $min, $max); | |
| } | |
| * @param int|float|null $max | |
| * @param int|float $default | |
| * @return float|int | |
| */ | |
| public function clamp($key, $min, $max = null, $default = 0) | |
| { | |
| if (func_num_args() === 2) { | |
| [$min, $max] = [0, $min]; | |
| } | |
| return Number::clamp($this->data($key, $default), $min, $max); | |
| } |
Contributor
Author
There was a problem hiding this comment.
I think I'll leave it as is for now. I have a feeling this one is maybe a bit on the "we already have Number::clamp()" side of the house, but we'll see.
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
I see it happen pretty routinely that an endpoint has a
per_pageparameter that someone will retrieve like this:If the request doesn't have validation in front of it (which happens pretty frequently), an attack surface is opened up to perform painfully large DB queries. If we can gently nudge developers to instead use:
then databases everywhere will be overjoyed! OWASP experts will have to find new work! Gitlab and GitHub will receive fewer comments by yours truly!