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 
replaceorslug. - 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