Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Optional Laravel Package

marvin255/optional

A lightweight Optional value object for PHP and Laravel that wraps nullable values and eliminates scattered null checks. Chain map, filter, and orElse helpers for safer, more readable pipelines, keeping your code fluent and free of repetitive if-null branching.

Deep Wiki
Context7

marvin255/optional is a lightweight PHP utility for working with nullable values through an Optional wrapper. It helps avoid repetitive null checks by treating missing values as an explicit, chainable state while keeping normal values easy to access.

Ideal for Laravel/PHP codebases that want safer, more expressive handling of potentially absent data.

  • Wrap nullable values with a simple Optional container
  • Chain transformations with map and filter
  • Extract values with sensible defaults or fallbacks
  • Reduce scattered null checks in business logic
  • Composable, functional-style API for cleaner code
Frequently asked questions about Optional
What is marvin255/optional and why would I use it in Laravel?
marvin255/optional is a PHP implementation of Java's Optional type. It wraps a value that may be null in a small container so you can chain operations such as map, filter, and fallback instead of writing repeated null checks. In Laravel it is useful in services, actions, and pipes where request data, model attributes, or repository results may be absent.
How do I install marvin255/optional in a Laravel app?
Install it with Composer by running composer require marvin255/optional in your Laravel project root. It is a plain PHP library, so there is no Artisan install command or asset publishing step. After installation, import the Optional class and start wrapping nullable values.
Do I need to register a service provider or publish config for marvin255/optional?
No. The package is described as a PHP implementation of Optional rather than a Laravel-specific integration, so it does not require a service provider, facade, or config file. You can use its classes directly after Composer autoloading. If future versions add Laravel integration, check the package README for details.
Which PHP and Laravel versions does marvin255/optional support?
Check the require section in the package's composer.json on Packagist for the exact PHP version constraint. Because it is a framework-agnostic PHP library, it can be used with any Laravel version that runs on a supported PHP version. There are no Laravel-specific version constraints unless the package explicitly declares them.
How do I handle nullable Eloquent attributes with Optional?
Use the nullable entry point, typically Optional::ofNullable, around an attribute that may be null, then chain map, filter, and a fallback such as orElse. For example, wrap a user's nickname, map it to a trimmed display value, and fall back to a default when it is empty. This keeps the null handling in one readable expression rather than an if block around the model attribute.
What is the difference between marvin255/optional and Laravel's optional() helper?
Laravel's optional() helper mainly lets you safely access properties or call methods on a value that may be null. marvin255/optional is a container with chainable operations like map, filter, and fallback, closer to Java's Optional. Use the Laravel helper for quick property access and the package when you want explicit empty-state handling and transformation pipelines.
Can I use marvin255/optional outside of Laravel?
Yes. It is a standalone PHP package, so it works in plain PHP projects, Symfony, or any Composer-based codebase. Laravel is simply a common context where nullable request input and Eloquent attributes make the pattern useful. No Laravel bootstrap is required.
How do map, filter, and fallback methods work together?
map transforms a present value, filter keeps or discards it based on a predicate, and fallback methods provide a default when the Optional is empty. Chaining them lets you express a small pipeline such as trim, validate, then default without intermediate null checks. Keep each step small so the final behavior remains easy to read and test.
Can I unit test code that uses marvin255/optional?
Yes. Optional is a value object, so you can assert whether it is present or empty and check the contained or fallback value directly. You do not need to mock the Optional itself; test the function or action that returns or consumes it. This makes null-path tests more explicit than relying on loose null assertions.
Is marvin255/optional safe for production and how should I evaluate maintenance?
For production, pin a specific version in composer.json and review the package's release history, tests, and PHP version constraints on Packagist. Since it is a small utility dependency, the main risks are unmaintained compatibility with future PHP versions and API differences from Java's Optional. Run your own unit tests around critical null-handling paths before rolling it out broadly.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator