What is Stringable in Laravel?
Stringable
is a class that wraps around a string and provides a fluent, chainable API to manipulate it.
Available from: Laravel 10.x and above
use Illuminate\Support\Str;
$string = Str::of('123');
Now, $string
is an instance of Illuminate\Support\Stringable
, and you can chain methods like:
Str::of(' 123 ')->trim()->toInteger(); // returns 123 as integer
Use with Chainable String Manipulations
$amount = Str::of('$25')->replace('$', '')->trim()->toInteger(); // 25
Real-world Scenario
You're building a Laravel form where users enter their age. The age input comes as a string, and you want to:
- Clean any extra spaces.
- Convert it to an integer before saving or processing it.
Example: Handling User Input for Age
<input type="text" name="age" value=" 25 ">
Now in your controller, you handle the input like this:
use Illuminate\Support\Str;
public function store(Request $request)
{
$rawAge = $request->input('age'); // " 25 "
$age = Str::of($rawAge)->trim()->toInteger(); // result: 25
if ($age >= 18) {
return "Eligible";
} else {
return "Not eligible";
}
}
Why Not Just Use (int) $value
?
This can be achieved like this:
$age = (int) trim($request->input('age'));
But using Str::of(...)->trim()->toInteger()
:
- Keeps your code clean and chainable.
- Great when chaining with other string operations like
replace
orslug
. - Matches Laravel’s expressive coding style.
🧠 Safe Conversion Practice
Always check if the input is numeric before converting:
$age = Str::of($request->input('age'))->trim();
$ageValue = $age->isNumeric()
? $age->toInteger()
: 0; // or throw validation error
🔁 Bonus: Using intval()
with Base Detection
You can use intval($value, base)
for more control:
intval('0x1A', 0); // 26 (hex)
intval('0b1010', 0); // 10 (binary)
📦 Real-World Usage Examples
Converting prices or CSV data:
// Parsing a price string
$price = Str::of('$1,299')->replace(['$', ','], '')->toInteger(); // 1299
// From a CSV row
$row = ['name' => 'John', 'age' => ' 30 '];
$age = Str::of($row['age'])->trim()->toInteger(); // 30
🎯 Takeaways
Stringable::toInteger()
is great for clean numeric conversion of strings.- Chain with
trim()
,replace()
, etc. for readable logic. - Validate or sanitize input before converting to avoid bugs.
- Prefer native casts (
(int)
,intval()
) when chaining isn’t needed. - Use
intval($value, base)
for hex, binary, octal support.
Comments
Post a Comment