silasyudi / optional
Portability of Java's java.util.Optional<T> class to PHP.
Installs: 7 427
Dependents: 2
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/silasyudi/optional
Requires
- php: >=7.4
Requires (Dev)
- phpunit/phpunit: ^9.5
README
Portability of Java's java.util.Optional<T> class to PHP, updated with Java 11 features.
Summary
Language / Idioma
Leia a versão em português 🇧🇷 aqui.
Instalation
composer require silasyudi/optional
Requirements
- PHP 7.4+
- Composer
Features
The Optional class encapsulates a value and can perform various operations on it.
Example without Optional:
/** @var Entity|null $entity */ $entity = $this->repository->find($id); if (!$entity) { throw new SomeException(); } ...
Example with Optional:
/** @var SilasYudi\Optional $optional */ $optional = $this->repository->find($id); $entity = $optional->orElseThrow(new SomeException()); ...
Differences
Some differences could not be avoided due to the particularities of each language. The most important are listed below:
Optional.stream()of the Java was not imported into this package, as it doesn't have something similar in PHP and already has similar methods inmap,flatMapandfilter.Optional.hashCode()was not imported into this package.NullPointerExceptioneNoSuchElementExceptionof the Java was replaced byOptionalInvalidStateExceptionwhen the Optional object cannot be empty andTypeErrorwhen attempting to pass null incallableparameters.Optional.orElseThrowin Java 11 is overloaded, and expects no parameter or a Supplier parameter. In this package, this method expects a Throwable object ornullas parameter.Consumer,Function,PredicateandSupplierwas imported ascallable.